如何将数据从QDialog获取到主窗口?

2024-09-29 17:18:01 发布

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

在Python中,我有一个主窗口和一个QDialog窗口

如果单击主窗口上的hozzaadBtn,QDIALOG窗口将打开。在QDialog窗口上有一个文本框,如果我单击QDialog上的filmekHozzaadBtn,我希望主窗口上的QListWidget从QDialog获取文本框文本

我该怎么做

主窗口代码:

从PyQt5导入QtCore、QtGui、QtWidgets 从PyQt5.QtWidgets导入QAction、QFileDialog、QInputDialog、QDialog 将filmek作为f导入 导入系统 从filmAddDialog导入Ui\u filmAddDialog

类Ui_Foablak(对象):

def setupUi(self, Foablak):
    Foablak.setObjectName("Foablak")
    Foablak.resize(617, 350)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(Foablak.sizePolicy().hasHeightForWidth())
    Foablak.setSizePolicy(sizePolicy)
    font = QtGui.QFont()
    font.setPointSize(10)
    Foablak.setFont(font)
    Foablak.setStyleSheet("")
    Foablak.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
    self.centralwidget = QtWidgets.QWidget(Foablak)
    self.centralwidget.setObjectName("centralwidget")
    self.label = QtWidgets.QLabel(self.centralwidget)
    self.label.setGeometry(QtCore.QRect(10, 50, 51, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label.setFont(font)
    self.label.setObjectName("label")
    self.label_2 = QtWidgets.QLabel(self.centralwidget)
    self.label_2.setGeometry(QtCore.QRect(140, 50, 81, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_2.setFont(font)
    self.label_2.setObjectName("label_2")
    self.label_3 = QtWidgets.QLabel(self.centralwidget)
    self.label_3.setGeometry(QtCore.QRect(270, 50, 111, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_3.setFont(font)
    self.label_3.setObjectName("label_3")
    self.listazBtn = QtWidgets.QPushButton(self.centralwidget)
    self.listazBtn.setGeometry(QtCore.QRect(10, 10, 101, 23))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.listazBtn.setFont(font)
    self.listazBtn.setStyleSheet("")
    self.listazBtn.setObjectName("listazBtn")
    self.hozzaadBtn = QtWidgets.QPushButton(self.centralwidget)
    self.hozzaadBtn.setGeometry(QtCore.QRect(120, 10, 121, 23))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.hozzaadBtn.setFont(font)
    self.hozzaadBtn.setObjectName("hozzaadBtn")
    self.modositBtn = QtWidgets.QPushButton(self.centralwidget)
    self.modositBtn.setGeometry(QtCore.QRect(248, 10, 121, 23))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.modositBtn.setFont(font)
    self.modositBtn.setObjectName("modositBtn")
    self.torolBtn = QtWidgets.QPushButton(self.centralwidget)
    self.torolBtn.setGeometry(QtCore.QRect(380, 10, 91, 23))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.torolBtn.setFont(font)
    self.torolBtn.setObjectName("torolBtn")
    self.mentesBtn = QtWidgets.QPushButton(self.centralwidget)
    self.mentesBtn.setGeometry(QtCore.QRect(480, 10, 101, 23))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.mentesBtn.setFont(font)
    self.mentesBtn.setObjectName("mentesBtn")
    self.label_4 = QtWidgets.QLabel(self.centralwidget)
    self.label_4.setGeometry(QtCore.QRect(400, 70, 101, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_4.setFont(font)
    self.label_4.setObjectName("label_4")
    self.premierLbl = QtWidgets.QLabel(self.centralwidget)
    self.premierLbl.setGeometry(QtCore.QRect(500, 70, 71, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.premierLbl.setFont(font)
    self.premierLbl.setText("")
    self.premierLbl.setObjectName("premierLbl")
    self.label_5 = QtWidgets.QLabel(self.centralwidget)
    self.label_5.setGeometry(QtCore.QRect(400, 100, 151, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_5.setFont(font)
    self.label_5.setObjectName("label_5")
    self.musoronLbl = QtWidgets.QLabel(self.centralwidget)
    self.musoronLbl.setGeometry(QtCore.QRect(550, 100, 71, 16))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.musoronLbl.setFont(font)
    self.musoronLbl.setText("")
    self.musoronLbl.setObjectName("musoronLbl")
    self.filmekListWidget = QtWidgets.QListWidget(self.centralwidget)
    self.filmekListWidget.setGeometry(QtCore.QRect(10, 70, 121, 192))
    self.filmekListWidget.setObjectName("filmekListWidget")
    self.mozikListWidget = QtWidgets.QListWidget(self.centralwidget)
    self.mozikListWidget.setGeometry(QtCore.QRect(140, 70, 121, 192))
    self.mozikListWidget.setObjectName("mozikListWidget")
    self.idopontokListWidget = QtWidgets.QListWidget(self.centralwidget)
    self.idopontokListWidget.setGeometry(QtCore.QRect(270, 70, 121, 192))
    self.idopontokListWidget.setObjectName("idopontokListWidget")
    Foablak.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(Foablak)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 617, 21))
    self.menubar.setObjectName("menubar")
    Foablak.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(Foablak)
    self.statusbar.setObjectName("statusbar")
    Foablak.setStatusBar(self.statusbar)

    self.retranslateUi(Foablak)
    QtCore.QMetaObject.connectSlotsByName(Foablak)

    self.listazBtn.clicked.connect(self.listazClicked)
    self.filmekListWidget.currentItemChanged.connect(self.filmChanged)
    self.torolBtn.clicked.connect(self.filmDelete)
    self.hozzaadBtn.clicked.connect(self.filmhozzaadOpen)

def retranslateUi(self, Foablak):
    _translate = QtCore.QCoreApplication.translate
    Foablak.setWindowTitle(_translate("Foablak", "Cinema City"))
    self.label.setText(_translate("Foablak", "Filmek:"))
    self.label_2.setText(_translate("Foablak", "Vetítő mozik:"))
    self.label_3.setText(_translate("Foablak", "Vetítési időpontok:"))
    self.listazBtn.setText(_translate("Foablak", "Filmek listázása"))
    self.hozzaadBtn.setText(_translate("Foablak", "Filmek hozzáadása"))
    self.modositBtn.setText(_translate("Foablak", "Filmek módosítása"))
    self.torolBtn.setText(_translate("Foablak", "Filmek törlése"))
    self.mentesBtn.setText(_translate("Foablak", "Adatok mentése"))
    self.label_4.setText(_translate("Foablak", "Premier dátuma:"))
    self.label_5.setText(_translate("Foablak", "Hány napja van műsoron:"))


cimek = []
mozik = []
idopontok = []
premierek = []
musoron1 = []

def listazClicked(self):

    self.filmekListWidget.clear()
    inFile = open('musor.txt', 'r')
    for i in inFile:
        tmp = i.split(';')
        film = f.Filmek(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4])

        self.cimek.append(film.cim)
        self.mozik.append(film.mozi)
        self.idopontok.append(film.idopont)
        self.premierek.append(film.premier)
        self.musoron1.append(film.musoron)

        self.filmekListWidget.addItem(film.cim)

    inFile.close()

def filmChanged(self):
    self.mozikListWidget.clear()
    self.idopontokListWidget.clear()

    for j in range(len(self.cimek)):

        if self.filmekListWidget.currentItem().text() == self.cimek[j]:

            self.mozikListWidget.addItem(self.mozik[j])
            self.idopontokListWidget.addItem(self.idopontok[j])
            self.premierLbl.setText(self.premierek[j])
            self.musoronLbl.setText(self.musoron1[j])

def filmDelete(self):

    for item in self.filmekListWidget.selectedItems():
        self.filmekListWidget.takeItem(self.filmekListWidget.row(item))

    #for j in range(len(self.cimek)):

        #if self.filmekListWidget.currentItem().text() == self.cimek[j]

def filmhozzaadOpen(self):
    dialog = QDialog()
    dialog.ui = Ui_filmAddDialog()
    dialog.ui.setupUi(dialog)
    dialog.exec_()

如果name==“main”: 导入系统 app=qtwidts.QApplication(sys.argv) Foablak=qtwidts.QMainWindow() ui=ui_Foablak() ui.setupUi(Foablak) Foablak.show() sys.exit(app.exec_())

QDialog代码:

从PyQt5导入QtCore、QtGui、QtWidgets

类Ui_filmAddDialog(对象):

def setupUi(self, filmAddDialog):
    filmAddDialog.setObjectName("filmAddDialog")
    filmAddDialog.resize(408, 254)
    self.verticalLayoutWidget = QtWidgets.QWidget(filmAddDialog)
    self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 160, 151))
    self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
    self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
    self.verticalLayout.setContentsMargins(0, 0, 0, 0)
    self.verticalLayout.setObjectName("verticalLayout")
    self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label.setFont(font)
    self.label.setObjectName("label")
    self.verticalLayout.addWidget(self.label)
    self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_2.setFont(font)
    self.label_2.setObjectName("label_2")
    self.verticalLayout.addWidget(self.label_2)
    self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget)
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_3.setFont(font)
    self.label_3.setObjectName("label_3")
    self.verticalLayout.addWidget(self.label_3)
    self.label_4 = QtWidgets.QLabel(self.verticalLayoutWidget)
    font = QtGui.QFont()
    font.setPointSize(10)
    self.label_4.setFont(font)
    self.label_4.setObjectName("label_4")
    self.verticalLayout.addWidget(self.label_4)
    self.verticalLayoutWidget_2 = QtWidgets.QWidget(filmAddDialog)
    self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(170, 10, 160, 151))
    self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
    self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
    self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
    self.verticalLayout_2.setObjectName("verticalLayout_2")
    self.filmcimAdd = QtWidgets.QTextEdit(self.verticalLayoutWidget_2)
    self.filmcimAdd.setObjectName("filmcimAdd")
    self.verticalLayout_2.addWidget(self.filmcimAdd)
    self.vetitomoziAdd = QtWidgets.QTextEdit(self.verticalLayoutWidget_2)
    self.vetitomoziAdd.setObjectName("vetitomoziAdd")
    self.verticalLayout_2.addWidget(self.vetitomoziAdd)
    self.idopontAdd = QtWidgets.QTextEdit(self.verticalLayoutWidget_2)
    self.idopontAdd.setObjectName("idopontAdd")
    self.verticalLayout_2.addWidget(self.idopontAdd)
    self.premierAdd = QtWidgets.QTextEdit(self.verticalLayoutWidget_2)
    self.premierAdd.setObjectName("premierAdd")
    self.verticalLayout_2.addWidget(self.premierAdd)
    self.filmekHozzaadBtn = QtWidgets.QPushButton(filmAddDialog)
    self.filmekHozzaadBtn.setGeometry(QtCore.QRect(170, 180, 75, 23))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.filmekHozzaadBtn.setFont(font)
    self.filmekHozzaadBtn.setObjectName("filmekHozzaadBtn")

    self.retranslateUi(filmAddDialog)
    QtCore.QMetaObject.connectSlotsByName(filmAddDialog)

def retranslateUi(self, filmAddDialog):
    _translate = QtCore.QCoreApplication.translate
    filmAddDialog.setWindowTitle(_translate("filmAddDialog", "Film hozzáadása"))
    self.label.setText(_translate("filmAddDialog", "Film címe:"))
    self.label_2.setText(_translate("filmAddDialog", "Vetítő mozi:"))
    self.label_3.setText(_translate("filmAddDialog", "Időpontok:"))
    self.label_4.setText(_translate("filmAddDialog", "Premier dátuma:"))
    self.filmekHozzaadBtn.setText(_translate("filmAddDialog", "Hozzáadás"))

如果name==“main”: 导入系统 app=qtwidts.QApplication(sys.argv) filmAddDialog=qtwidts.QDialog() ui=ui_filmAddDialog() ui.setupUi(filmAddDialog) filmAddDialog.show() sys.exit(app.exec_())


Tags: selflabeltranslatefontsettextqtguiqtcoreqtwidgets

热门问题