我刚开始使用PyQt,我在布局和内容滚动方面遇到了困难。
我有一个MainWindow
,我想在这里放置多个小部件
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.top = 0
self.left = 0
self.width = 500
self.height = 500
layout = QtWidgets.QGridLayout()
layout.addWidget(WidgetOne(), 0, 0)
layout.addWidget(WidgetTwo(), 1, 1)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
self.initMainWindow()
def initMainWindow(self):
self.setGeometry(self.top, self.left, self.width, self.height)
self.show()
在{
class WidgetOne(QtWidgets.QWidget):
def __init__(self):
super(WidgetOne, self).__init__()
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(QtCore.Qt.red)
painter.setBrush(QtCore.Qt.green)
# draw something
painter.end()
现在我想让WidgetOne
在那里我画了一些可滚动的东西。我画的面积比画的面积大ẁ在屏幕上输入,因此我希望能够滚动我绘制的所有内容。我知道它是用QScrollArea
完成的,但我只发现滚动区域是整个网格而不是网格中的一个单元格的例子
我已经感谢你的帮助了。非常感谢。 (欢迎提供任何建议和改进。)
编辑:
我想我快到了。现在我在画的东西周围有滚动条,但我不能滚动。我想我需要在某个地方定一个尺码,但我不知道在哪里。我在{
self.scroll = QtWidgets.QScrollArea()
self.scroll.setWidgetResizable(True)
self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.scrollWidget = WidgetOne()
self.scroll.setWidget(self.scrollWidget)
layout.addWidget(self.scroll, 0, 0)
正如您所指出的,解决方案是使用QScrollArea,但其视口采用小部件的最小大小,但在您的情况下没有最小大小,因此只需设置minimumSizeHint、minimumSize或fixedSize:
相关问题 更多 >
编程相关推荐