如何通过PyQt5中的不同窗口传递变量?

问题描述 投票:0回答:1

我有两个窗口,第一个窗口是'FirstWindow',第二个窗口是'Calendar'。第一个窗口有一个按钮(pbSelectDate)和一个标签(lbDate)。日历窗口具有日历(CalendarBox)和一个按钮(pbSelect)。

当我单击第一个窗口中的选择(pbSelectDate)时,将弹出日历窗口。我选择日期,然后在日历窗口中按选择按钮(pbSelect)。我想在第一个窗口中将所选日期打印到标签(lbDate)。

预先感谢。 :)

这是第一个窗口脚本。

from PyQt5 import QtCore, QtGui, QtWidgets

from Calendar import Ui_CalendarWindow

class Ui_FirstWindow(object):

    def Open_Calendar(self):
        self.window = QtWidgets.QMainWindow()
        self.ui = Ui_CalendarWindow()
        self.ui.setupUi(self.window)
        self.window.show()

    def setupUi(self, FirstWindow):
        FirstWindow.setObjectName("FirstWindow")
        FirstWindow.resize(654, 242)
        self.centralwidget = QtWidgets.QWidget(FirstWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lbDate = QtWidgets.QLabel(self.centralwidget)
        self.lbDate.setGeometry(QtCore.QRect(330, 70, 281, 131))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.lbDate.setFont(font)
        self.lbDate.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.lbDate.setObjectName("lbDate")
        self.pbSelectDate = QtWidgets.QPushButton(self.centralwidget)
        self.pbSelectDate.setGeometry(QtCore.QRect(80, 100, 191, 61))
        self.pbSelectDate.setObjectName("pbSelectDate")

        self.pbSelectDate.clicked.connect(self.Open_Calendar)

        FirstWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(FirstWindow)
        self.statusbar.setObjectName("statusbar")
        FirstWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, FirstWindow):
        _translate = QtCore.QCoreApplication.translate
        FirstWindow.setWindowTitle(_translate("FirstWindow", "MainWindow"))
        self.lbDate.setText(_translate("FirstWindow", "Sep"))
        self.pbSelectDate.setText(_translate("FirstWindow", "Select Date"))

if __name__ == "__main__":

    import sys
    app = QtWidgets.QApplication(sys.argv)
    FirstWindow = QtWidgets.QMainWindow()
    ui = Ui_FirstWindow()
    ui.setupUi(FirstWindow)
    FirstWindow.show()
    sys.exit(app.exec_())

这是“日历”窗口脚本。

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_CalendarWindow(object):

    def PickedDate(self,var):
        self.selecteddate = self.CalendarBox.selectedDate()
        #print(self.selecteddate.toString('MMM')+'-'+self.selecteddate.toString('yyyy'))

    def setupUi(self, CalendarWindow):
        CalendarWindow.setObjectName("CalendarWindow")
        CalendarWindow.resize(512, 458)
        self.centralwidget = QtWidgets.QWidget(CalendarWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.CalendarBox = QtWidgets.QCalendarWidget(self.centralwidget)
        self.CalendarBox.setGeometry(QtCore.QRect(20, 20, 464, 289))
        self.CalendarBox.setObjectName("CalendarBox")
        self.pbSelect = QtWidgets.QPushButton(self.centralwidget)
        self.pbSelect.setGeometry(QtCore.QRect(160, 330, 181, 60))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.pbSelect.setFont(font)
        self.pbSelect.setObjectName("pbSelect")

        self.pbSelect.clicked.connect(self.PickedDate)

        CalendarWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(CalendarWindow)
        self.statusbar.setObjectName("statusbar")
        CalendarWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, CalendarWindow):
        _translate = QtCore.QCoreApplication.translate
        CalendarWindow.setWindowTitle(_translate("CalendarWindow", "MainWindow"))
        self.pbSelect.setText(_translate("CalendarWindow", "Select"))



if __name__ == "__main__":

    import sys
    app = QtWidgets.QApplication(sys.argv)
    CalendarWindow = QtWidgets.QMainWindow()
    ui = Ui_CalendarWindow()
    ui.setupUi(CalendarWindow)
    CalendarWindow.show()
    sys.exit(app.exec_())

我有两个窗口,第一个窗口是'FirstWindow',第二个窗口是'Calendar'。第一个窗口有一个按钮(pbSelectDate)和一个标签(lbDate)。日历窗口具有日历(CalendarBox)和一个...

python class pyqt pyqt5
1个回答
0
投票

不要修改Qt Designer生成的代码,而是创建另一个从适当的小部件继承并使用初始类填充的类。

© www.soinside.com 2019 - 2024. All rights reserved.