PyQt无法为主窗口中的对话框中的对象设置值

我有一个主程序用他们自己的GUI调用各种对话框。 基本上我想要做的是在Main中为另一个类设置一个值:

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

但我不能。 该对话框在一个单独的文件中,并使用标准的2种方法在QTDesigner中完成:从PyQt5导入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类中,定义:

settextsignal= pyqtSignal(str)

在你的Ui_rga_sessionDialog类中,定义:

@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)
链接地址: http://www.djcxy.com/p/64493.html

上一篇: PyQt can't set a value for an object from a dialog in main window

下一篇: PyQT4: getting text from Ui for existing python program