【发布时间】:2016-06-29 18:24:18
【问题描述】:
我创建了一个小 pyqt5 项目。这是应用程序运行时的打印屏幕:
当用户从主窗口单击QPushButton 时,会出现对话窗口并且用户在QlineEdit 中写入一些内容。然后在单击对话窗口的QPushButton 时,对话窗口向主窗口发送信号并被删除。该信号包含用户输入的文本。
以下是我的两个类的描述,非常简单:
MainWindow 类。
DialogWindow 类(我想制作自己的 Dialog 类,而不使用预先存在的 Dialog 窗口)。
我的主脚本
我有几个问题:
它是使用信号在窗口之间进行通信的正确方法吗?我不认为我违反了类封装。但是我不喜欢通过写来连接子类上的信号:
self.mySignal.connect(parent.updatelabelAnswer)
在这一行中,我使用属性parent - 可以吗?在我看来,这不是使用信号的好方法。
我的第二个问题是:
我可以在DialogWindow 的on_pushButton_clicked 插槽中调用self.deleteLater() 吗?似乎不是,因为我已经检查了 python 交互式 shell 并且对象 myDialogWindow 仍然可以访问。
【问题讨论】:
-
查看我对这个主题的回答here。至于
deleteLater(),即使可以手动调用插槽而不发出单个插槽,通常也没有必要,也不知道为什么要在这里这样做。 :P 当您可以简单地在此处复制粘贴时,请避免发布您的代码的屏幕截图。让人们更轻松地使用它并更快地解决您的问题。 -
感谢您的回答。在我看来,我不能使用第三个脚本来连接两个小部件,因为对话框窗口的实例只会在单击主窗口的按钮时创建,因此我必须在插槽 on_pushButton_clicked 中创建这个实例.对于删除问题,我该如何删除对话窗口的实例?我粘贴了代码,因为我是从另一台计算机上获得的:p。但你是对的,一定有更好的解决方案
标签: python dialog pyqt encapsulation qt-signals