我的一个小项目使用PyQt5存在一个小问题。我尝试将随机QWidget(在此示例中为QPushbutton)添加到自定义QWidget。但是,我不理解“setParent”函数的行为。当我在自定义QWidget之外使用它时,会显示QPushButton。当我在自定义Widget的声明函数中使用它时,QPushButton被遮挡,我没有机会在添加布局(我不想要)之外显示它。这是源代码的一个例子:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class customWidget(QWidget):
def __init__(self):
super().__init__()
self.addButton()
def addButton(self):
button = QPushButton('not_showing')
button.setParent(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
button = QPushButton('showing')
button.setParent(w)
button.move(50,50)
w.resize(600,600)
w.move(1000,300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())
在QPushButton初始化期间添加父项时没有变化。
答案 0 :(得分:-1)
当函数addButton退出时,该按钮被删除。
如果您想看按钮,请尝试:
Point{p} In Surface {q};
主函数中没有此问题,因为在应用程序停止之前,此函数不会返回。
编辑:评论是对的,但你也错过了一些论点。这将有效class customWidget(QWidget):
def __init__(self):
super().__init__()
self.addButton()
self.button = None
def addButton(self):
if self.button is None:
self.button = QPushButton('not_showing')
self.button.setParent(self)