gpt4 book ai didi

python - 如何向带有画线的小部件添加滚动条?

转载 作者:行者123 更新时间:2023-12-01 04:09:04 25 4
gpt4 key购买 nike

我无法让它按照我想要的方式工作。我想在彼此下方绘制多条线并将其显示在具有滚动条的窗口中。

到目前为止,我可以绘制线条并显示它们,但我的滚动条不起作用。正确的做法是什么?

文件 y.list 包含简单的数字对作为我的行的起点和终点。喜欢:

1 100
4 64
72 98

这是迄今为止我的代码:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Example(QWidget):

def __init__(self):
super(Example, self).__init__()

def paintEvent(self, e):

qp = QPainter()
qp.begin(self)
self.drawLines(qp)
qp.end()

def drawLines(self, qp):

wTotal = 4*2*117

pen = QPen(QColor(100, 200, 0), 5, Qt.SolidLine)
qp.setPen(pen)
qp.drawLine(24, 20, 24+wTotal, 20)

pen = QPen(QColor(0, 0, 255), 2, Qt.SolidLine)
qp.setPen(pen)
qp.drawLine(24+wTotal/2,18,24+wTotal/2,22)

pen = QPen(QColor(0, 50, 255), 2, Qt.SolidLine)
qp.setPen(pen)

with open("y.list", 'r') as points:

linecount = 0
for line in points:

linecount += 1
splitLine = line.split()

start = int(splitLine[0])*4
end = int(splitLine[1])*4

qp.drawLine(20+start, 20+5*linecount, 20+end, 20+5*linecount)


class Widget(QWidget):

def __init__(self, parent= None):
super(Widget, self).__init__()

self.setGeometry(200,100,1100,800)
#Container Widget
widget = QWidget()
#Layout of Container Widget
layout = QVBoxLayout(self)
lines = Example()
layout.addWidget(lines)
widget.setLayout(layout)

#Scroll Area Properties
scroll = QScrollArea()
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setWidgetResizable(True)
scroll.setWidget(widget)

#Scroll Area Layer add
vLayout = QVBoxLayout(self)
vLayout.addWidget(scroll)
self.setLayout(vLayout)


if __name__ == '__main__':
app = QApplication(sys.argv)

dialog = Widget()
dialog.show()

app.exec_()

最佳答案

目前,您已经使小部件可调整大小,因此小部件将自动调整大小以适应可用空间,并且滚动条永远不会改变(因为不需要它们)。

要更改此设置,您需要为小部件指定特定大小,并且不要自动调整其大小:

    scroll.setWidgetResizable(False)
scroll.setWidget(widget)
widget.resize(2000, 2000)

注意:不要尝试在绘制事件期间以编程方式调整小部件的大小,因为调整大小本身可能会导致重新绘制。

关于python - 如何向带有画线的小部件添加滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35202864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com