首页 > 解决方案 > 跳转到另一个类后如何返回主类?

问题描述

我目前正在使用 Python 3.6 和 PyQt5 开发 GUI。

使用菜单栏我打开一个弹出窗口,但是当它关​​闭时,它被卡在另一个类中。我怎样才能回到我的主要课程?我包含了我的一些相关代码。一切正常,直到我单击菜单项并打开弹出窗口,在我单击所需的日期后,它关闭并出现错误,例如MyPopup对象没有属性“(属性名称)”

from PyQt5 import QtCore, QtGui, QtWidgets
import xlrd
import datetime

class Ui_MainWindow(QtWidgets.QWidget):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(1580, 1020)
        MainWindow.setDockNestingEnabled(False)


        import RAP_rc
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/Register/logo2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
#        MainWindow.setWindowState(QtCore.Qt.WindowMaximized)
        MainWindow.setWindowState(MainWindow.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
        MainWindow.setFocus(QtCore.Qt.PopupFocusReason)
#        MainWindow.activateWindow()
        MainWindow.raise_()
        self.statusbar.showMessage('User: Test')
        self.actionCargar_Archivo_Base.triggered.connect(self.getxlsbase)
        self.actionCargar_Archivo_Facturacion.triggered.connect(self.getxlsfacturacion)
        self.actionCargar_Archivo_Salesforce.triggered.connect(self.getxlssf)
        self.actionSeleccionar_Fecha.triggered.connect(self.openPopUp)
        if self.actionSeleccionar_Fecha.isChecked():
            date_text = str(date_select)
            print(date_select)
            self.label.setText(date_text)

    def openPopUp(self):
        self.pop = MyPopup()
        self.pop.show()

    def date_filter(self):
        self.main = Ui_MainWindow.setupUi(self, MainWindow)
        self.main.show()
        date_text = str(date_select)
        print(date_select)
        self.label.setText(date_text)



class MyPopup(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        import RAP_rc
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/Register/logo2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setWindowIcon(icon)
        self.setFixedSize(392, 241)
        self.setWindowTitle('Fecha')
        self.calendarWidget = QtWidgets.QCalendarWidget(self)
        self.calendarWidget.setGeometry(QtCore.QRect(0, 0, 392, 241))
        self.calendarWidget.setObjectName("calendarWidget")
        self.calendarWidget.clicked.connect(self.select_date)



    def select_date(self):
        global date_select
        date_select=self.calendarWidget.selectedDate().toPyDate()
        selected_month = date_select.month
        selected_year = date_select.year
        print('Month ', selected_month, '\n', 'Year ', selected_year)
        self.close()
        Ui_MainWindow.date_filter(self)
        return date_select

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_())

你可以在这里看到完整的代码 https://github.com/liesugahara/Practicas/blob/master/Test

标签: pythonpython-3.xpyqtpyqt5

解决方案


尝试替换模块date_filter (self)中的方法。Test.py

    def date_filter(self):
##        self.main = Ui_MainWindow.setupUi(self, MainWindow)     # ---
##        self.main.show()                                        # ---
        date_text = str(date_select)
        print(date_select)
##        #self.label.setText(date_text)                          # ---
        ui.label.setText(date_text)                               # +++

在此处输入图像描述


推荐阅读