[英]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.