如何将数据从一个窗口发送到另一个窗口

2024-05-08 16:12:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我的问题是有答案的,但这是pyqt4的问题,我不知道出了什么问题。你知道吗

我在qt-desiger上开了两扇窗户。它们都是Ui类型的文件。 “nadrzedny”是主窗口,“dodaj”是第二个窗口。 “nadrzedny”有QlistWidget,它应该是“dodaj”窗口QLineEdit添加的列表项。 1如何使数据从“dodaj”窗口发送到“nadrzedny”窗口。 2有没有可能使一个点击按钮-分配功能 例如,将数据传递到“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_())

我刚把它打开,但我不知道如何将输入的文本从一个窗口发送到另一个窗口。你知道吗


Tags: importselfuidefsyslabelpyqt5translate
1条回答
网友
1楼 · 发布于 2024-05-08 16:12:36

试试看:

你知道吗主.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"))

你知道吗多达杰.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"))

enter image description here


更新

主.py

import sys
import os
import datetime                             
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QDialog

from PyQt5 import uic                                                   # !

class Window2(QDialog): 
    def __init__(self):
        super().__init__()
        uic.loadUi('dodaj_nieruchomosc.ui', self)                       # !


class Ui(QtWidgets.QMainWindow): 
    def __init__(self):
        super().__init__()

        uic.loadUi('nadrzedny.ui', self)                                # !

        self.przycisk.clicked.connect(self.okno2) 

    def okno2(self):
        self.w = Window2()
        self.w.show()
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv       
        self.w.Zatwierdz2.clicked.connect(self.sendText)               # + Zatwierdz2

    def sendText(self):
        dateTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
        item = "{} -> {}".format(dateTime, self.w.wpr_dane.text())
        self.lista_adr.addItem(QtWidgets.QListWidgetItem(item))        # + lista_adr
        self.w.hide()  
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    window.show()           
    sys.exit(app.exec_())

nadrzedny.ui公司

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QListWidget" name="lista_adr">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>70</y>
      <width>211</width>
      <height>291</height>
     </rect>
    </property>
   </widget>
   <widget class="QPushButton" name="przycisk">
    <property name="geometry">
     <rect>
      <x>20</x>
      <y>370</y>
      <width>101</width>
      <height>27</height>
     </rect>
    </property>
    <property name="text">
     <string>Wyświetl Info</string>
    </property>
   </widget>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>30</y>
      <width>201</width>
      <height>21</height>
     </rect>
    </property>
    <property name="text">
     <string>Wybierz Nieruchomość i Kliknij OK</string>
    </property>
   </widget>
   <widget class="QPushButton" name="Dodaj_adr">
    <property name="geometry">
     <rect>
      <x>140</x>
      <y>370</y>
      <width>151</width>
      <height>27</height>
     </rect>
    </property>
    <property name="text">
     <string>Dodaj Nieruchomość</string>
    </property>
   </widget>
   <widget class="QPushButton" name="Modyfikuj_nier">
    <property name="geometry">
     <rect>
      <x>320</x>
      <y>370</y>
      <width>171</width>
      <height>27</height>
     </rect>
    </property>
    <property name="text">
     <string>Modyfikuj Nieruchomość</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>27</height>
    </rect>
   </property>
   <widget class="QMenu" name="menuPliki">
    <property name="title">
     <string>Pliki</string>
    </property>
    <addaction name="actionNowy"/>
    <addaction name="actionWczytaj"/>
    <addaction name="actionZapisz"/>
    <addaction name="separator"/>
    <addaction name="actionUsu"/>
    <addaction name="actionZamknij"/>
   </widget>
   <widget class="QMenu" name="menuEdycja">
    <property name="title">
     <string>Edycja</string>
    </property>
    <addaction name="actionEdytuj_Dane"/>
   </widget>
   <addaction name="menuPliki"/>
   <addaction name="menuEdycja"/>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
  <action name="actionNowy">
   <property name="text">
    <string>Nowa Nieruchomość</string>
   </property>
  </action>
  <action name="actionWczytaj">
   <property name="text">
    <string>Wczytaj</string>
   </property>
  </action>
  <action name="actionZapisz">
   <property name="text">
    <string>Zapisz</string>
   </property>
  </action>
  <action name="actionUsu">
   <property name="text">
    <string>Usuń</string>
   </property>
  </action>
  <action name="actionZamknij">
   <property name="text">
    <string>Zamknij</string>
   </property>
  </action>
  <action name="actionEdytuj_Dane">
   <property name="text">
    <string>Edytuj Dane</string>
   </property>
  </action>
 </widget>
 <resources/>
 <connections/>
</ui>

多达吉_nieruchomosc.ui公司

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>604</width>
    <height>366</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QPushButton" name="Zatwierdz2">
   <property name="geometry">
    <rect>
     <x>70</x>
     <y>240</y>
     <width>131</width>
     <height>41</height>
    </rect>
   </property>
   <property name="text">
    <string>Zatwierdz</string>
   </property>
  </widget>
  <widget class="QLabel" name="label">
   <property name="geometry">
    <rect>
     <x>40</x>
     <y>50</y>
     <width>161</width>
     <height>31</height>
    </rect>
   </property>
   <property name="text">
    <string>Wpisz adres nieruchomości</string>
   </property>
  </widget>
  <widget class="QLineEdit" name="wpr_dane">
   <property name="geometry">
    <rect>
     <x>220</x>
     <y>50</y>
     <width>271</width>
     <height>27</height>
    </rect>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

enter image description here

相关问题 更多 >

    热门问题