Как мне вернуться в основной класс после перехода в другой? - PullRequest
0 голосов
/ 04 октября 2018

В настоящее время я работаю над графическим интерфейсом, используя Python 3.6 и PyQt5.

В строке меню я открываю всплывающее окно, но когда оно закрывается, оно застревает в другом классе.Как я могу вернуться в свой основной класс?Я включаю некоторые соответствующие части моего кода.Все работает нормально, пока я не щелкну по пункту меню и не откроется всплывающее окно, после того как я нажму на нужную дату, оно закроется, и я получу ошибки, такие как 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

1 Ответ

0 голосов
/ 04 октября 2018

Попробуйте заменить метод 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)                               # +++

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...