[英]How to get value from dialog button to mainwindow tablewidget in pyqt5?
[英]How to retrieve data from dialog window to mainwindow in pyqt?
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'maintest.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
from test import Ui_Dialog
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def connect(self):
self.updateWindow=QtGui.QDialog()
self.ui_update=Ui_Dialog()
self.ui_update.setupUi(self.updateWindow)
self.updateWindow.show()
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(391, 248)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(80, 60, 113, 27))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(80, 100, 112, 34))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 391, 31))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "B1", None))
self.pushButton.clicked.connect(self.connect)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
這是主要的文件代碼
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
def save_data(self):
d= self.lineEdit.text()
print(d)
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(397, 219)
self.pushButton = QtGui.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(110, 100, 112, 34))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.lineEdit = QtGui.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(110, 60, 113, 27))
self.lineEdit.setText(_fromUtf8(""))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.pushButton.setText(_translate("Dialog", "B2", None))
self.pushButton.clicked.connect(self.save_data)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
這是對話框文件代碼
我有一個主窗口形式,其上有一個lineedit l1和一個按鈕B1。 單擊按鈕B1時,將打開一個新的對話框窗口。 對話框窗口有一個lineedit l2和一個按鈕B2。 我在l2中寫了一些東西,然后在對話框窗口中單擊b2。 如何在主窗口中單擊b2到l1時在l2中發送我的數據,並在按鈕b2單擊並將控制返回到主窗口后關閉對話窗口
始終建議不要弄亂生成Qt Designer的代碼,最好創建另一個實現邏輯的文件。 此外,Qt Designer生成的設計類不是小部件,而是用於填充小部件。 因此,建議創建一個實現邏輯並使用該設計的類。
要點,如果要在按下QPushButton
時關閉對話框,則將clicked
信號連接到close()
方法。 如果你想獲得QDialog
一些數據,最簡單的形式之一是首先使用exec_()
方法顯示對話框,因為它生成自己的循環,當窗口關閉時,執行以下代碼行。
class Dialog(QDialog, Ui_Dialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.close)
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.onClicked)
def onClicked(self):
updateDialog = Dialog()
updateDialog.exec_()
self.lineEdit.setText(updateDialog.lineEdit.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
注意:我建議刪除您在設計中所做的更改或使用pyuic將其恢復
您可以將Dialog上的Button與主應用程序中的Function連接,就像您已經完成的那樣。
像這樣更新你的connect
例程:
def connect(self):
self.updateWindow=QtGui.QDialog()
self.ui_update=Ui_Dialog()
self.ui_update.setupUi(self.updateWindow)
self.ui_update.pushButton.connect(self.printContent)
self.updateWindow.show()
同
def printContent(self):
print self.ui_update.lineEdit.text()
您還應該小心變量的名稱。 如果您使用已經占用的占位符,將來會出現錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.