簡體   English   中英

PyQt無法通過主窗口中的對話框設置對象的值

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

我有一個Main程序,它使用自己的GUI調用各種Dialog。 基本上我想做的是在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 

但是我不能。 該對話框位於單獨的文件中,並通過QTDesigner中的標准2種方法進行制作:從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)

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

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

然后,只要您想設置文本,只需調用:

self.settextsignal.emit(text)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM