2017-12-15 2 views
0

QGroupBox에 대해 두 개의 스크롤 막대를 만들려고하는데 하나만 성공하면됩니다 (세로 막대 하나임) 내가 무엇을해야하는지 잘 모르겠습니다. 여기 PyQt 환경에서 두 개의 스크롤 막대 (세로 및 가로)를 같은 위젯으로 설정하는 방법은 무엇입니까?

내 코드의 간단한 예입니다

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() 

을 여기 결과입니다 : 내 더 복잡한 코드 나, QTabWidget을 사용 나는 그것을 포함하는 이유에

enter image description here

이 예제. 내가 뭘하고 싶은건 내가 텍스트를 왼쪽과 오른쪽으로 이동할 수있는 하단에 수평 스크롤바가 있습니다. 분명히 나는 ​​다른 하나가 텍스트를 상하로 움직이기를 원한다.

나는 또한 처음에 두 번째 스크롤 막대를 추가하려고

(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

니스! 고마워. 나는이 같은 일을 시도했지만, 나는 그것을 엉망으로 만들었다. 어떻게 ... – ymmx

관련 문제