2017-12-15 5 views
0

私はQGroupBox用に2つのスクロールバーを作成しようとしていますが、1つしかない(垂直のもの)。 私は何をする必要があるのか​​分かりません。ここどのようにPyQt環境で同じウィジェットに2つのスクロールバー(垂直と水平)を設定しますか?

は、私のコードの短い例である:私はQTabWidgetを使用し、私のより複雑なコードで

enter image description here

、なぜ私はそれを含んでいたこと:

from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 
import sys 


class SurfViewer(QMainWindow): 
    def __init__(self, parent=None): 
     super(SurfViewer, self).__init__() 
     self.parent = parent 

     self.centralTabs= QTabWidget() 
     self.setCentralWidget(self.centralTabs) 
     self.setFixedWidth(200) 
     self.setFixedHeight(200) 

     #tab Model selection 
     self.tab_ModelSelect = QWidget() 
     self.centralTabs.addTab(self.tab_ModelSelect,"Label") 


     self.groupscrolllayouttest = QHBoxLayout() 
     self.groupscrollbartest = QGroupBox() 


     self.mainHBOX_param_scene = QVBoxLayout() 
     for i in range(10): 
      Label = QLabel('BlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla') 
      Label.setFixedWidth(200) 
      self.mainHBOX_param_scene.addWidget(Label) 


     # 
     scroll = QScrollArea() 
     scroll.setWidget(self.groupscrollbartest) 
     scroll.setWidgetResizable(True) 
     scroll.setFixedWidth(20) 
     scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) 
     scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) 
     self.groupscrollbartest.setLayout(self.mainHBOX_param_scene) 
     self.groupscrolllayouttest.addWidget(self.groupscrollbartest) 
     self.groupscrolllayouttest.addWidget(scroll) 


     self.tab_ModelSelect.setLayout(self.groupscrolllayouttest) 

def main(): 
    app = QApplication(sys.argv) 
    ex = SurfViewer(app) 
    ex.setWindowTitle('window') 
    # ex.showMaximized() 
    ex.show() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

、ここでは結果であり、この例。私がしたいことは、テキストを左右にシフトできるように、下に水平スクロールバーを置くことです。明らかに、私はもう一方のテキストを上下にシフトさせておきたい。

私も最初の1に第2スクロールバーを追加しよう

(groupscrolllayouttest)

from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 
import sys 


class SurfViewer(QMainWindow): 
    def __init__(self, parent=None): 
     super(SurfViewer, self).__init__() 
     self.parent = parent 

     self.centralTabs= QTabWidget() 
     self.setCentralWidget(self.centralTabs) 
     self.setFixedWidth(200) 
     self.setFixedHeight(200) 

     #tab Model selection 
     self.tab_ModelSelect = QWidget() 
     self.centralTabs.addTab(self.tab_ModelSelect,"Label") 


     self.groupscrolllayouttest2 = QVBoxLayout() #### 
     self.groupscrollbartest2 = QGroupBox() #### 

     self.groupscrolllayouttest = QHBoxLayout() #### 
     self.groupscrollbartest = QGroupBox() #### 


     self.mainHBOX_param_scene = QVBoxLayout() 
     for i in range(10): 
      Label = QLabel('BlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla') 
      Label.setFixedWidth(200) 
      self.mainHBOX_param_scene.addWidget(Label) 


     # 
     scroll = QScrollArea() 
     scroll.setWidget(self.groupscrollbartest) 
     scroll.setWidgetResizable(True) 
     scroll.setFixedWidth(20) 
     scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) 
     scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) 
     # self.mainHBOX_param_scene.addWidget(scroll) 
     self.groupscrollbartest.setLayout(self.mainHBOX_param_scene) 
     self.groupscrolllayouttest.addWidget(self.groupscrollbartest) 
     self.groupscrolllayouttest.addWidget(scroll) 

     scroll2 = QScrollArea() 
     scroll2.setWidget(self.groupscrollbartest2) 
     scroll2.setWidgetResizable(True) 
     scroll2.setFixedWidth(20) 
     scroll2.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) 
     scroll2.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) 
     self.groupscrollbartest2.setLayout(self.groupscrolllayouttest) 
     self.groupscrolllayouttest2.addWidget(self.groupscrollbartest2) 
     self.groupscrolllayouttest2.addWidget(scroll2) 


     self.tab_ModelSelect.setLayout(self.groupscrolllayouttest2) 

def main(): 
    app = QApplication(sys.argv) 
    ex = SurfViewer(app) 
    ex.setWindowTitle('window') 
    # ex.showMaximized() 
    ex.show() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

しかし、私は奇妙なスクロールバーで終わる:だから今、私は」

enter image description here

私は立ち往生した。何か案が?

答えて

1

は何がしなければならないことはウィジェットを作成し、そのウィジェットの代わりにQGroupBox:

[...] 
scroll = QScrollArea() 
widget = QWidget(self) 
widget.setLayout(QVBoxLayout()) 
widget.layout().addWidget(self.groupscrollbartest) 
scroll.setWidget(widget) 
scroll.setWidgetResizable(True) 
self.groupscrollbartest.setLayout(self.mainHBOX_param_scene) 
self.groupscrolllayouttest.addWidget(scroll) 

self.tab_ModelSelect.setLayout(self.groupscrolllayouttest) 
[...] 

出力:

enter image description here

+0

ナイス!どうもありがとう。私はこのような何かをしようとしたが、私はそれを乱したsomeHow ... – ymmx

関連する問題