PyQt 无法从 main window 中的对话框中为对象设置值

PyQt can't set a value for an object from a dialog in main window

我有一个主程序,它调用各种具有自己的 GUI 的对话框。基本上我想做的是在 Main 中为另一个对象设置一个值 class:

class ZoneManager(QMainWindow, mainWindow.Ui_zzzMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        mainWindow.Ui_zzzMainWindow.__init__(self)
.....
    def cookie_find(self):
            match = re.search('cookie_id=(.*?)\"', page).group(1)
            rga = str(match)
            print (match)
            dialog = QDialog()
            dialog.ui = rga_session.Ui_rga_sessionDialog()
            dialog.ui.setupUi(dialog)
            dialog.exec_()
     dialog.ui.rgaSessionText.setText(rga) # <<<<I want to set the text into a QLineEdit object

but I can't. The dialog is in a separate file and made it in QTDesigner with standard 2 methods: from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_rga_sessionDialog(object):

    def setupUi(self, rga_sessionDialog):
        rga_sessionDialog.setObjectName("rga_sessionDialog")
        self.rgaSessionText = QtWidgets.QLineEdit(rga_sessionDialog)
        self.rgaSessionText.setGeometry(QtCore.QRect(110, 30, 261, 21))
        self.rgaSessionText.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.rgaSessionText.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
        self.rgaSessionText.setObjectName("rgaSessionText")
..........
    def retranslateUi(self, rga_sessionDialog):
            _translate = QtCore.QCoreApplication.translate
.....

谁可以将我从 Regex 中找到的文本附加到 "rgaSessionText" 中?我做错了什么?提前致谢

我觉得主窗口和其他对话框之间通过信号槽方式通信比较好

在您的 ZoneManager class 中,定义:

settextsignal= pyqtSignal(str)

在你的 Ui_rga_sessionDialog class 中,定义:

@pyqtSlot(str)
def textUpdate(self, rga):
    self.rgaSessionText.setText(rga)

然后在您的 cookie_find 方法中,在初始化 Ui_rga_sessionDialog 之后,输入:

self.settextsignal.connect(dialog.ui.textUpdate)

然后每当你想设置文本时,只需调用:

self.settextsignal.emit(text)