欢迎光临散文网 会员登陆 & 注册

气轻PyQt5 13 不同窗口间的槽机制

2023-03-10 07:18 作者:气轻  | 我要投稿

 

点击按钮后在新窗口中显示日历控件,在日历控件中选择日期后,新窗口关闭。通过槽机制将选择的日期显示在主窗口中的文本框里。

 

from PyQt5.QtWidgets import *

from PyQt5.QtGui import QFont, QIcon, QPixmap

from PyQt5.QtCore import Qt, QDate, pyqtSignal

import sys

import datetime

 

class PyQt513(QWidget):

    def __init__(self):

        super().__init__()

        self.initUI()

    def initUI(self):

        self.setWindowTitle('气轻PyQt5')                # 设置窗口标题

        self.resize(300, 60)                            # 设置窗口大小

 

        dateData = datetime.datetime.now().date()

        dateLabel = dateData.strftime('%Y-%m-%d')

        self.edit = QLineEdit(self)                     # 输入框

        self.edit.setGeometry(10, 0,230, 40)            # 设置位置和大小

        self.edit.setReadOnly(True)                     # 只读

        self.edit.setText(dateLabel)

        self.edit.setAlignment(Qt.AlignmentFlag.AlignHCenter)# 居中设置

        self.edit.setStyleSheet('background-color:#FFE4B5;color : #32CD32; \

                    font: bold italic large /"Times New Roman/";font-size:25px')

 

        self.btn = QPushButton('', self)

        self.btn.setGeometry(250, 0, 40, 40)

        self.btn.setIcon(QIcon(QPixmap('Date.png')))

        self.btn.clicked.connect(self.calendarOn)

 

        self.show()

 

    def updateEdit(self,t):

        self.edit.setText(t)

 

    def calendarOn( self ):

        self.calWin = CalendarWin(self.edit)

        self.calWin.show()

        self.calWin.move(900,700)

        self.calWin.signal.connect(self.updateEdit)    # 连接信号与槽

 

class CalendarWin(QWidget):

    signal = pyqtSignal( str )                          #定义一个信号

    def __init__(self,t):

        super().__init__()

        self.t = t

        self.setWindowTitle('日期')

        self.resize(440, 220)

        cal = QCalendarWidget(self)

        cal.setGridVisible(True)

        cal.resize(400,180)

        cal.move(10,10)

        cal.clicked[QDate].connect(self.emitDate)    # 按下按钮时发送信号

 

    def emitDate(self,date):

        self.signal.emit(date.toString("yyyy-MM-dd"))

        self.close()

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = PyQt513()

    sys.exit(app.exec_())

 

执行结果

 参照【气轻PyQt6 13


气轻PyQt5 13 不同窗口间的槽机制的评论 (共 条)

分享到微博请遵守国家法律