我是PyQt5的新手,我正在处理QLayouts的问题。。。你知道吗
class welcomeWidget(QWidget):
def __init__(self):
super().__init__()
self.initText()
self.organize()
def initText(self):
self.welcome = QLabel("Welcome to Name!", self)
self.info = QLabel("This program allows you to....", self)
self.message = QLabel("First, you must enter some data...", self)
self.proceed = QLabel("Click on 'Next >>' to proceed.", self)
def organize(self):
vbox = QVBoxLayout(self)
scroll = QScrollArea(self)
vbox.addWidget(scroll)
wid = QWidget(self)
vevobox = QVBoxLayout(wid)
vv = QVBoxLayout()
vv.addWidget(self.welcome)
vv.addWidget(self.info)
vevobox.addLayout(vv)
self.show()
看起来像这样。。。
Idk做什么,每当我添加其他Qlabel时,它们都会消失。你知道吗
在展示解决方案之前,您必须解释一些事情:
在小部件中设置布局有3种方法:
创建没有父级的小部件,然后小部件指示它使用带有
setLayout()
的布局:指向构建布局时要管理的小部件。你知道吗
前面的方法是等效的,但第三种方法是将其建立为已建立布局的子对象。
小部件只能具有顶层布局,因此如果只保留最后一个布局:
当一个小部件在构造器中被设置为父部件,或者它被建立为处理小部件位置的布局的一部分时,它是另一个小部件的子部件:
1.
2.
因此,如果您考虑上述因素,您可以减少代码:
使用上述方法,可以组装以下树:
正如您所看到的,例如,有两个标签显示在所有内容的后面,因为它们最初是在没有布局的情况下建立的,然后在放置
QScrollArea
的地方建立了布局,所以最后一个标签占用了所有可用的空间,最后,没有布局的wid小部件被放置在左上角的位置,在这个小部件中,剩下的2个标签被建立。你知道吗其思想是具有以下结构:
使用上述方法可以得到以下结果:
相关问题 更多 >
编程相关推荐