gpt4 book ai didi

python - 如何在堆叠小部件中重用另一个页面中的项目 - pyqt

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:30 25 4
gpt4 key购买 nike

如果您有一个包含两个页面的堆叠小部件,并且您希望在两个页面上都有一个标签,那么您将如何在不使用不同的变量名称重新定义它的情况下执行此操作。我实际上不确定这是否可行,但由于我有一个相当大的项目,所以我试图使我的代码尽可能小。

一个例子是这样的。

...
self.firstPage = QtGui.QWidget()
self.firstPage.setObjectName(_fromUtf8("firstPage"))

self.testLabel = QtGui.QLabel(self.firstPage)
self.testLabel.setGeometry(QtCore.QRect(0, 0, 921, 91))
self.testLabel.setText(_fromUtf8("this is just a test label"))
self.testLabel.setObjectName(_fromUtf8("testLabel"))

self.stackedWidget.addWidget(self.firstPage)


self.secondPage = QtGui.QWidget()
...
self.stackedWdiget.addWidget(self.secondPage)

假设我想将 testLabel 添加到 stackedWidget 中的第二个页面。这是将 testLabel 放到第二页以将其重新定义为 testLabel-2,然后重新添加其所有设置的唯一方法。

最佳答案

根据我的经验,这是不可能的。由于 QLabel 类继承了 QWidget,因此您只能在另一个小部件内添加一个小部件。不继承QWidget的对象可以用于任意数量的小部件。例如,QIconQFont 的一个对象可用于许多小部件来设置其图标或字体。

如果您需要在多个小部件内使用标签,则需要为每个小部件创建单独的标签 .

更新:

如果要创建很多小部件,则需要定义一个单独的方法来创建该小部件的对象:

...
def createPage(self, objName):
page = QtGui.QWidget()
page.setObjectName(_fromUtf8(objName))
return page

def createLabel(self, parent, objName, text):
label = QtGui.QLabel(parent)
label.setGeometry(QtCore.QRect(0, 0, 921, 91))
label.setText(_fromUtf8(text))
label.setObjectName(_fromUtf8(objName))
return label

def setPages(self)
self.firstPage = self.createPage("firstPage")
# call self.createLabel and add label to self.firstPage
self.secondPage = self.createPage("secondPage")
self.stackedWidget.addWidget(self.firstPage)
self.stackedWidget.addWidget(self.secondPage)
...

您现在可以根据需要创建任意数量的标签,而无需重复代码。这是为您认为将在应用程序中重复的代码创建单独的方法的好习惯。在您的情况下,调用 createLabel 方法,它将返回一个对象,根据需要将该对象放入任何小部件中。您还可以像保存页面对象一样保存标签对象,以便稍后在代码中引用它们。

关于python - 如何在堆叠小部件中重用另一个页面中的项目 - pyqt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602271/

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