通用问题:如何在 python 文件之间传递信号?

问题描述 投票:0回答:1

所以。我正在尝试使用 python 和 PyQT5 学习编码和 gui 开发。为了设计不同的窗口,我使用 qt 设计器,因此每个窗口都有自己单独的文件。

到目前为止一直进展顺利。

我想做的是在存储在不同 python 文件中的窗口之间发送信号。更具体地说,我有一个窗口,您可以通过按钮打开辅助窗口。在第二个窗口中,用户可以填写表单,当按下“保存”时,该信息将传递回第一个窗口并显示在 QtableQidget(或标签或其他内容)中。

所以。 第一个窗口: 空表/行编辑/等等。 Button_secondary_window > 打开辅助窗口。

辅助窗口: 在 lineEdit/table/etc 中输入信息。 Button_save > 将信息发送回第一个窗口。

那么有人可以解释一下如何在 python 文件之间发送信息吗? 我知道你可以在不同类下的同一个 python 文件中存储多个窗口,但是感觉 qt 设计器变得有点多余,因为似乎你不能将两个 qt 设计器文件打包到一个 python 文件中?!?

到目前为止,我还无法让此操作发挥作用。

是的,我知道我没有附加任何代码。这是一个关于 python 文件之间来回信号的纯粹通用问题(使用 PyQt5)。

python pyqt5 signals
1个回答
0
投票

在您的情况下没有问题,因为子窗口不必了解主窗口的任何信息,并且可以只是对话框。

如果一个类使用了另一个类,则导入相关类。

所以这是纯粹的理论答案

MyDialog.py

class MyDialog(QtWidgets.QDialog):
    def name(self):
        return self._ui.name.text()
    def phoneNumber(self):
        return self._ui.phoneNumber.text()

MainWindow.py

import MyDialog

class MainWindow:
    def onButtonClicked(self):
        dialog = MyDialog(self)
        if dialog.exec() != QtWidgets.QDialog.Accepted:
            return
        name = dialog.name()
        phoneNumber = dialog.phoneNumber()

main.py

import MainWindow

if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = MainWindow()
    window.show()
    app.exec()
© www.soinside.com 2019 - 2024. All rights reserved.