我认为我的问题是有答案的,但它是针对pyqt4的,我无法弄清楚出什么问题了。
我在qt desiger上制作了2个窗口。它们都是Ui类型文件。 “ nadrzedny”是主窗口,“ dodaj”是第二窗口。 “ nadrzedny”具有QlistWidget,该QlistWidget应该列出由“ dodaj”窗口QLineEdit添加的项目。 1.如何使数据从“ dodaj”窗口发送到“ nadrzedny”窗口。 2.是否可以一键单击QpushButton-分配功能 例如,将数据传递到“ nadrzedny”窗口并将日期保存在文件中 同时。
在PY文件类型的 “nadrzedny”
'''
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '/home/konrad /Przyklad/nadrzedny.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.listWidget = QtWidgets.QListWidget(self.centralwidget)
self.listWidget.setGeometry(QtCore.QRect(70, 110, 301, 331))
self.listWidget.setObjectName("listWidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(110, 30, 291, 17))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(70, 470, 301, 27))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Lista nieruchomości"))
self.pushButton.setText(_translate("MainWindow", "Dodaj"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
'''
在Python类型的 “dodaj” 文件:
''' #--编码:utf-8--
# Form implementation generated from reading ui file '/home/konrad/Przyklad/dodaj.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(30, 40, 131, 17))
self.label.setObjectName("label")
self.wpr_dane = QtWidgets.QLineEdit(Dialog)
self.wpr_dane.setGeometry(QtCore.QRect(160, 30, 211, 27))
self.wpr_dane.setObjectName("wpr_dane")
self.zatwierdz2 = QtWidgets.QPushButton(Dialog)
self.zatwierdz2.setGeometry(QtCore.QRect(60, 240, 171, 27))
self.zatwierdz2.setObjectName("zatwierdz2")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "adres nieruchomości"))
self.zatwierdz2.setText(_translate("Dialog", "Zatwierdz"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
'''
我的程序是:
import os
PyQt5 import QtWidgets
from PyQt5.QtWidgets import QDialog
import sys
from PyQt5 import uic
os.chdir('/home/konrad/Przyklad') #Scieżka domyślna do mojego pliku
class Window2(QDialog): # Okno w którym będę wpisywał dane nieruchomości
def __init__(self):
super().__init__()
uic.loadUi('dodaj.ui', self)
class Ui(QtWidgets.QMainWindow): # Okno główne programu
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('nadrzedny.ui', self)
self.pushButton.clicked.connect(self.okno2) # zdefiniowany przycisk otwierajacy Window 2
self.show()
def okno2(self):
self.w = Window2()
self.w.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
sys.exit(app.exec_())
我只是将其打开,但是我不知道如何将输入的文本从一个窗口发送到另一个窗口。
答案 0 :(得分:0)
尝试一下:
main.py
import sys
import os
import datetime # +
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QDialog
#from PyQt5 import uic # -
from nadrzedny import Ui_MainWindow # +
from dodaj import Ui_Dialog # +
#os.chdir('/home/konrad/Przyklad') # Scieżka domyślna do mojego pliku
class Window2(QDialog, Ui_Dialog): # + Ui_Dialog
def __init__(self):
super().__init__()
# uic.loadUi('dodaj.ui', self) # -
self.setupUi(self) # +
class Ui(QtWidgets.QMainWindow, Ui_MainWindow): # + Ui_MainWindow
def __init__(self):
super().__init__()
# uic.loadUi('nadrzedny.ui', self) # -
self.setupUi(self) # +
self.pushButton.clicked.connect(self.okno2) # zdefiniowany przycisk otwierajacy Window 2
def okno2(self):
self.w = Window2()
self.w.show()
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.w.zatwierdz2.clicked.connect(self.sendText)
def sendText(self):
dateTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
item = "{} -> {}".format(dateTime, self.w.wpr_dane.text())
self.listWidget.addItem(QtWidgets.QListWidgetItem(item))
self.w.hide()
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
window.show() # +
sys.exit(app.exec_())
nadrzedny.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.listWidget = QtWidgets.QListWidget(self.centralwidget)
self.listWidget.setGeometry(QtCore.QRect(70, 110, 301, 331))
self.listWidget.setObjectName("listWidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(110, 30, 291, 17))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(70, 470, 301, 27))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Lista nieruchomości"))
self.pushButton.setText(_translate("MainWindow", "Dodaj"))
dodaj.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(30, 40, 131, 17))
self.label.setObjectName("label")
self.wpr_dane = QtWidgets.QLineEdit(Dialog)
self.wpr_dane.setGeometry(QtCore.QRect(160, 30, 211, 27))
self.wpr_dane.setObjectName("wpr_dane")
self.zatwierdz2 = QtWidgets.QPushButton(Dialog)
self.zatwierdz2.setGeometry(QtCore.QRect(60, 240, 171, 27))
self.zatwierdz2.setObjectName("zatwierdz2")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "adres nieruchomości"))
self.zatwierdz2.setText(_translate("Dialog", "Zatwierdz"))