PyQt5从子窗口小部件访问数据以打印在父窗口上

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

我需要帮助,需要从userChosenDate()小部件中的函数OpenSelectDateTimeWindow访问该值。从我的printCurrentDate子窗口小部件中的pushButtonConfirm单击之后,我需要在主窗口的QLabel对象OpenSelectDateTimeWindow上打印此值。我已经设法打印出从子窗口小部件中的日历窗口小部件中选择的默认选定日期,但是我不知道在从子窗口小部件中选择另一个日期后如何让文本自动更新。

窗口小部件和主窗口的UI都是从QtDesigner生成的,并且未修改代码。这些是我为实例化UI添加的以下代码。

这是小部件的代码:

class OpenSelectDateTimeWindow(QtWidgets.QWidget, Ui_SelectDateTime):
    # initialise GUI and window
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        self.setupUi(self)
        # when Back button is clicked, window is closed
        self.pushButtonBack.clicked.connect(self.close)
        # when Confirm button is clicked, return day chosen by the user (print date, followed by day)
        self.pushButtonConfirm.clicked.connect(self.userChosenDate)
        self.pushButtonConfirm.clicked.connect(self.close)

    # 2 functions to return selected date and time on the
    # MainWindow UI / New Window UI where stall's information
    # will be printed according to the user chosen date and time

    # this function is to return user chosen date from the calendarWidget widget
    def userChosenDate(self):
        self.date = self.calendarWidget.selectedDate().toString("dd-MM-yyyy, dddd")
        print(self.date)  # for checking in terminal
        return self.date

这是我主窗口的代码。

class OpenMainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setupUi(self)
        self.setDateAndTimeButton.clicked.connect(self.DateTimeWindow)

    def DateTimeWindow(self):
        self.SelectDateTimeWindow = OpenSelectDateTimeWindow()
        # initialise GUI and window
        self.SelectDateTimeWindow.show()
        self.printCurrentDate.setText(self.SelectDateTimeWindow.userChosenDate())
        ################need help here###########################
        #while self.SelectDateTimeWindow.pushButtonConfirm.clicked():     
            #dateString = self.SelectDateTimeWindow.userChosenDate()
            #self.printCurrentDate.setText(dateString)
python-3.x user-interface pyqt pyqt5
1个回答
0
投票
之后,在我的主窗口上的QLabel对象printCurrentDate上打印此值

我发现,在我设置文本的函数上方添加@pyqtSlot()将允许我想要的工作。尽管我想知道是否有人可以解释@pyqtSlot()的实际作用,因为我对此并不十分熟悉。

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