最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

使用tkinter实现一个类似手表的电子时钟软件,该电子时钟可进行计时、日历等功能

IT圈 admin 3浏览 0评论

使用tkinter实现一个类似手表的电子时钟软件,该电子时钟可进行计时、日历等功能

由于功能略显单调所以我在原来功能的基础上有添加了两个功能(1)音乐功能—可播放本地音乐。(2)天气爬取功能—按下天气按钮会弹出一个初始化窗口,文本框中默认城市兰州若要查看其他城市可自行输入。再按下确认后会出现第二个页面上面包括了自查询这天气五天内的天气状况。这一功能用到了爬虫程序。 最终用Python开发出了一个主页面即万年历窗口可任意查询某一年某一天。还可查询传统节日。在此界面设立三个功能按钮是可实现音乐,计时,天气查询功能。但需从左至右依次点击使用,若不能则计时功能无法展示。每使用一个功能首先小化切勿关闭,若直接关闭则程序整个全部关闭。

 部分源码:

from trinket.CustomizeWidgets import *
from PerpetualCalendar import *
import sys
class GUI(QMainWindow):def __init__(self):super().__init__()self.wnlWidget = QWidget()self.setupUI()def setupUI(self):x = QPalette()self.setFixedSize(640, 380)self.setWindowTitle("日历功能")self.setCentralWidget(self.wnlWidget)self.calendarUI()displayDate(self)self.show()def calendarUI(self):self.gridWNL = QGridLayout()self.wnlWidget.setLayout(self.gridWNL)self.gridWNL.setSpacing(0)self.hlayWNL = QHBoxLayout()self.hlayWNL.setContentsMargins(3, 0, 5, 0)self.gridWNL.addLayout(self.hlayWNL, 0, 0, 1, 7)self.cblYear = ComboBox()self.cblYear.setFixedWidth(80)self.btnLastYear = QPushButton('')self.btnNextYear = QPushButton('')self.cblYear.activated.connect(lambda : displayDate(self))self.btnLastYear.setMaximumSize(0,0)self.btnNextYear.setMaximumSize(0,0)self.hlayWNL.addWidget(self.cblYear)self.cblMonth = ComboBox()for i in range(12):self.cblMonth.addItem(str(i + 1) + '月')self.cblMonth.setMaxVisibleItems(12)self.cblMonth.setFocusPolicy(False)self.cblMonth.setMaximumWidth(60)self.btnLastMonth = QPushButton("")self.btnNextMonth = QPushButton("")self.cblMonth.activated.connect(lambda : displayDate(self))self.hlayWNL.addStretch()self.hlayWNL.addWidget(self.cblMonth)self.hlayWNL.addStretch()self.btnToday = QPushButton("今日")self.btnToday.clicked.connect(lambda : displayDate(self))self.btnToday.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday)self.labMonday = Label("一")self.labTuesday = Label("二")self.labWednesday = Label("三")self.labThursday = Label("四")self.labFriday = Label("五")self.labSaturday = Label("六")self.labSunday = Label("日")labWeeks = [self.labMonday, self.labTuesday, self.labWednesday, self.labThursday, self.labFriday, self.labSaturday, self.labSunday]for i in range(7):self.gridWNL.addWidget(labWeeks[i], 1, i)labWeeks[i].setMaximumHeight(40)self.lab00, self.lab01, self.lab02, self.lab03, self.lab04, self.lab05, self.lab06 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab10, self.lab11, self.lab12, self.lab13, self.lab14, self.lab15, self.lab16 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab20, self.lab21, self.lab22, self.lab23, self.lab24, self.lab25, self.lab26 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab30, self.lab31, self.lab32, self.lab33, self.lab34, self.lab35, self.lab36 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab40, self.lab41, self.lab42, self.lab43, self.lab44, self.lab45, self.lab46 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab50, self.lab51, self.lab52, self.lab53, self.lab54, self.lab55, self.lab56 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.labs = [[self.lab00, self.lab01, self.lab02, self.lab03, self.lab04, self.lab05, self.lab06],[self.lab10, self.lab11, self.lab12, self.lab13, self.lab14, self.lab15, self.lab16],[self.lab20, self.lab21, self.lab22, self.lab23, self.lab24, self.lab25, self.lab26],[self.lab30, self.lab31, self.lab32, self.lab33, self.lab34, self.lab35, self.lab36],[self.lab40, self.lab41, self.lab42, self.lab43, self.lab44, self.lab45, self.lab46],[self.lab50, self.lab51, self.lab52, self.lab53, self.lab54, self.lab55, self.lab56], ]for i in range(6):for j in range(7):self.labs[i][j].setFixedSize(48, 48)self.labs[i][j].clicked.connect(lambda : displayDate(self))self.gridWNL.addWidget(self.labs[i][j], i + 2, j)self.btnToday4 = QPushButton("天气")self.btnToday4.clicked.connect(lambda: X(self))self.btnToday4.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday4)self.btnToday5 = QPushButton("计时")self.btnToday5.clicked.connect(lambda: update_time(self))self.btnToday5.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday5)self.btnToday77 = QPushButton("音乐")self.btnToday77.clicked.connect(lambda: OP(self))self.btnToday77.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday77)self.cblCentury = ComboBox()for i in range(startCentury, endCentury + 1):if i < 0:self.cblCentury.addItem('BC' + str(abs(i)) + '世纪')else:self.cblCentury.addItem(str(i) + '世纪')self.cblCentury.currentIndexChanged.connect(lambda: yI(self))self.cblCentury.activated.connect(lambda: displayDate(self))self.cblCentury.setMaximumWidth(0)self.cblCentury.setFocusPolicy(False)self.cblFindFestival = ComboBox()self.cblFindFestival.addItem('农历节日')for festival in lcfestivals:self.cblFindFestival.addItem(festival[-1])self.cblFindFestival.activated.connect(self.thisJumpFestival)self.cblFindFestival.setStyleSheet("QComboBox { leftPadding: 1px }")self.cblFindFestival.setMaximumWidth(100)self.hlayGL = QHBoxLayout()self.hlayGL.addWidget(self.cblFindFestival)self.labInfo = QLabel()self.labInfo.setStyleSheet("QLabel{ font= 20;}")self.labInfo.setAlignment(Qt.AlignHCenter)self.labInfo.setContentsMargins(0, 6, 5, 6)self.labInfo.setWordWrap(True)self.labInfo.setFixedWidth(130)self.gridWNL.addLayout(self.hlayGL, 0, 7, 1, 1)self.gridWNL.addWidget(self.labInfo, 1, 7, 7, 1)def thisJumpMonth(self):displayDate(self)def thisJumpFestival(self):displayDate(self)
if __name__ == '__main__':app = QApplication(sys.argv)app.setStyle('Fusion')ui = GUI()app.exec_()

 

 

 

使用tkinter实现一个类似手表的电子时钟软件,该电子时钟可进行计时、日历等功能

由于功能略显单调所以我在原来功能的基础上有添加了两个功能(1)音乐功能—可播放本地音乐。(2)天气爬取功能—按下天气按钮会弹出一个初始化窗口,文本框中默认城市兰州若要查看其他城市可自行输入。再按下确认后会出现第二个页面上面包括了自查询这天气五天内的天气状况。这一功能用到了爬虫程序。 最终用Python开发出了一个主页面即万年历窗口可任意查询某一年某一天。还可查询传统节日。在此界面设立三个功能按钮是可实现音乐,计时,天气查询功能。但需从左至右依次点击使用,若不能则计时功能无法展示。每使用一个功能首先小化切勿关闭,若直接关闭则程序整个全部关闭。

 部分源码:

from trinket.CustomizeWidgets import *
from PerpetualCalendar import *
import sys
class GUI(QMainWindow):def __init__(self):super().__init__()self.wnlWidget = QWidget()self.setupUI()def setupUI(self):x = QPalette()self.setFixedSize(640, 380)self.setWindowTitle("日历功能")self.setCentralWidget(self.wnlWidget)self.calendarUI()displayDate(self)self.show()def calendarUI(self):self.gridWNL = QGridLayout()self.wnlWidget.setLayout(self.gridWNL)self.gridWNL.setSpacing(0)self.hlayWNL = QHBoxLayout()self.hlayWNL.setContentsMargins(3, 0, 5, 0)self.gridWNL.addLayout(self.hlayWNL, 0, 0, 1, 7)self.cblYear = ComboBox()self.cblYear.setFixedWidth(80)self.btnLastYear = QPushButton('')self.btnNextYear = QPushButton('')self.cblYear.activated.connect(lambda : displayDate(self))self.btnLastYear.setMaximumSize(0,0)self.btnNextYear.setMaximumSize(0,0)self.hlayWNL.addWidget(self.cblYear)self.cblMonth = ComboBox()for i in range(12):self.cblMonth.addItem(str(i + 1) + '月')self.cblMonth.setMaxVisibleItems(12)self.cblMonth.setFocusPolicy(False)self.cblMonth.setMaximumWidth(60)self.btnLastMonth = QPushButton("")self.btnNextMonth = QPushButton("")self.cblMonth.activated.connect(lambda : displayDate(self))self.hlayWNL.addStretch()self.hlayWNL.addWidget(self.cblMonth)self.hlayWNL.addStretch()self.btnToday = QPushButton("今日")self.btnToday.clicked.connect(lambda : displayDate(self))self.btnToday.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday)self.labMonday = Label("一")self.labTuesday = Label("二")self.labWednesday = Label("三")self.labThursday = Label("四")self.labFriday = Label("五")self.labSaturday = Label("六")self.labSunday = Label("日")labWeeks = [self.labMonday, self.labTuesday, self.labWednesday, self.labThursday, self.labFriday, self.labSaturday, self.labSunday]for i in range(7):self.gridWNL.addWidget(labWeeks[i], 1, i)labWeeks[i].setMaximumHeight(40)self.lab00, self.lab01, self.lab02, self.lab03, self.lab04, self.lab05, self.lab06 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab10, self.lab11, self.lab12, self.lab13, self.lab14, self.lab15, self.lab16 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab20, self.lab21, self.lab22, self.lab23, self.lab24, self.lab25, self.lab26 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab30, self.lab31, self.lab32, self.lab33, self.lab34, self.lab35, self.lab36 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab40, self.lab41, self.lab42, self.lab43, self.lab44, self.lab45, self.lab46 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.lab50, self.lab51, self.lab52, self.lab53, self.lab54, self.lab55, self.lab56 = Label(), Label(), Label(), Label(), Label(), Label(), Label()self.labs = [[self.lab00, self.lab01, self.lab02, self.lab03, self.lab04, self.lab05, self.lab06],[self.lab10, self.lab11, self.lab12, self.lab13, self.lab14, self.lab15, self.lab16],[self.lab20, self.lab21, self.lab22, self.lab23, self.lab24, self.lab25, self.lab26],[self.lab30, self.lab31, self.lab32, self.lab33, self.lab34, self.lab35, self.lab36],[self.lab40, self.lab41, self.lab42, self.lab43, self.lab44, self.lab45, self.lab46],[self.lab50, self.lab51, self.lab52, self.lab53, self.lab54, self.lab55, self.lab56], ]for i in range(6):for j in range(7):self.labs[i][j].setFixedSize(48, 48)self.labs[i][j].clicked.connect(lambda : displayDate(self))self.gridWNL.addWidget(self.labs[i][j], i + 2, j)self.btnToday4 = QPushButton("天气")self.btnToday4.clicked.connect(lambda: X(self))self.btnToday4.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday4)self.btnToday5 = QPushButton("计时")self.btnToday5.clicked.connect(lambda: update_time(self))self.btnToday5.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday5)self.btnToday77 = QPushButton("音乐")self.btnToday77.clicked.connect(lambda: OP(self))self.btnToday77.setMaximumWidth(36)self.hlayWNL.addWidget(self.btnToday77)self.cblCentury = ComboBox()for i in range(startCentury, endCentury + 1):if i < 0:self.cblCentury.addItem('BC' + str(abs(i)) + '世纪')else:self.cblCentury.addItem(str(i) + '世纪')self.cblCentury.currentIndexChanged.connect(lambda: yI(self))self.cblCentury.activated.connect(lambda: displayDate(self))self.cblCentury.setMaximumWidth(0)self.cblCentury.setFocusPolicy(False)self.cblFindFestival = ComboBox()self.cblFindFestival.addItem('农历节日')for festival in lcfestivals:self.cblFindFestival.addItem(festival[-1])self.cblFindFestival.activated.connect(self.thisJumpFestival)self.cblFindFestival.setStyleSheet("QComboBox { leftPadding: 1px }")self.cblFindFestival.setMaximumWidth(100)self.hlayGL = QHBoxLayout()self.hlayGL.addWidget(self.cblFindFestival)self.labInfo = QLabel()self.labInfo.setStyleSheet("QLabel{ font= 20;}")self.labInfo.setAlignment(Qt.AlignHCenter)self.labInfo.setContentsMargins(0, 6, 5, 6)self.labInfo.setWordWrap(True)self.labInfo.setFixedWidth(130)self.gridWNL.addLayout(self.hlayGL, 0, 7, 1, 1)self.gridWNL.addWidget(self.labInfo, 1, 7, 7, 1)def thisJumpMonth(self):displayDate(self)def thisJumpFestival(self):displayDate(self)
if __name__ == '__main__':app = QApplication(sys.argv)app.setStyle('Fusion')ui = GUI()app.exec_()

 

 

 

发布评论

评论列表 (0)

  1. 暂无评论