python选择日期控件_Python3 自己写了个DateCtrl日期控件 | 学步园
我想在Python中找个像是VC中CDateTimeCtrl控件一样选择日期的控件没找着,谁知到告诉我啊
后来我自己写了一个,代码如下:
--------------------------DateCtrl.py----------------------------
#作者 常亮
#时间:2011年4月30日15:48:47
from tkinter import *
import calendar
from datetime import date
class DateCtrl(Frame):
def __init__ (self, master=None, cnf={}, **kw):
Frame.__init__( self, bg='lightgray')
self.master = master
self.master.size = (100,150)
self.master.resizable(False, False)
self.date = date.today()
self.master.title('我的日历')
self.master.rowconfigure( 0, weight = 1 )
self.master.columnconfigure( 0, weight = 1 )
self.grid( sticky = W+E+N+W )
self.dayid = []
self.UpdateUI()
def SetDate(self,date):
self.date = date
self.UpdateUI()
def GetDate(self):
return self.date
def MonthBack (self):
if date == date.min:
return
if self.date.month == 1:
self.date = self.date.replace(year=self.date.year-1, month=12)
else:
if self.date.day > calendar.monthrange(self.date.year,self.date.month-1)[1]:
self.date = self.date.replace(month=self.date.month-1,day=calendar.monthrange(self.date.year,self.date.month-1)[1])
else:
self.date = self.date.replace(month=self.date.month-1)
self.UpdateUI()
def MonthFoeward (self):
if date == date.max:
return
if self.date.month == 12:
self.date = self.date.replace(year=self.date.year+1,month=1)
else:
if self.date.day > calendar.monthrange(self.date.year,self.date.month+1)[1]:
self.date = self.date.replace(month=self.date.month+1,day=calendar.monthrange(self.date.year,self.date.month+1)[1])
else:
self.date = self.date.replace(month=self.date.month+1)
self.UpdateUI()
def UpdateUI (self):
lendayid = len(self.dayid)
for i in range(lendayid):
self.dayid[lendayid-i-1].destroy()
del(self.dayid[lendayid-i-1])
self.backwardBt = Button(text='
self.YMBtn = Button(text='%d-%d'%(self.date.year,self.date.month),command=lambda sf=self:print(sf.date))/
.grid(row=0, column=1,columnspan = 5, sticky=W+E+N+S)
self.forwardBt = Button(text='>',command=self.MonthFoeward).grid(row=0, column=6, sticky=W+E+N+S)
col = 0
for wk in ['一','二','三','四','五','六','日']:
Label(text=wk).grid(row=1,column=col,sticky=W+E+N+S)
col += 1
row = 2
col = 0
today = date.today()
for weekday in calendar.monthcalendar(self.date.year,self.date.month):
for dayt in weekday:
if dayt == 0:
col+=1
continue
bkcolour = 'lightgray'
if col == 5:
bkcolour = 'green'
if col == 6:
bkcolour = 'blue'
if dayt == self.date.day:
bkcolour = 'red'
tdrelief = FLAT
if self.date.year==today.year/
and self.date.month==today.month/
and dayt == today.day:
tdrelief = GROOVE
bt = Button(self.master,text='%d'%dayt,relief=tdrelief,bg=bkcolour,
command=lambda sf=self,dt=dayt:sf.rpday(dt))
bt.grid(row=row, column=col, sticky=W+E+N+S)
self.dayid.append(bt)
col+=1
row+=1
col=0
def rpday(self,dt):
self.date=self.date.replace(day=dt)
self.UpdateUI()
if __name__ == '__main__':
root = Tk()
mainfram = DateCtrl(root)
tdt = date.today()
mainfram.SetDate(tdt.replace(day=3))#试试重置日期
root.mainloop()
-----------------------------------------------------------------------------
点击年月会打印当前控件的日期
python选择日期控件_Python3 自己写了个DateCtrl日期控件 | 学步园相关推荐
- Java控件模糊半透明_Android如何实现模糊的半透明窗口 | 学步园
本示例使用自定义主题样式,实现模糊半透明的Activity. 1. 定义清单文件(AndroidManifest.xml) package="my.android.test" a ...
- python源码深度剖析_Python源码剖析——深度探索动态语言核心技术 | 学步园
8.3 Python虚拟机的运行框架 当Python启动后,首先会进行Python运行时环境的 初始化.注意这里的运行时环境是一个与上一节剖析的执行环境不同的概念.运行时环境是一个全局的概念,而执行 ...
- 日结算 java_建设银行支付接口,按日期查询已结算订单xml接口解析(JAVA版) | 学步园...
建行的查询接口不如招行那么全面,建行没有提供按单订单号查询,而且如果你查询的日期没有一笔成功的订单会直接返回一个html告诉你没有信息,并且如果你跨天查询,订单很多很多,他也会返回一个html告诉你订 ...
- python数字转对应中文_python中将阿拉伯数字转换成中文的实现代码 | 学步园
复制代码 代码如下: #!/usr/bin/python #-*- encoding: utf-8 -*- import types class NotIntegerError(Exception): ...
- python socket接收图像 数据_python中socket接受数据的三种方法 | 学步园
原位置:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/408859 Description: An issue with socket ...
- python模拟浏览器下载文件_python第一个脚本,模拟浏览器下载文件 | 学步园
用wget命令下载文件总是失败.用python脚本模拟浏览器下载,代码如下: #!/usr/bin/python import sys from urllib import FancyURLopene ...
- python max函数key_Python标准库:内置函数max(iterable, *[, key, default]) | 学步园
max(arg1, arg2, *args[, key]) 本函数是迭代对象iterable进行比较,找出最大值返回.当key参数不为空时,就以key的函数对象为判断的标准. 例子: #max() a ...
- python选择日期控件_【Python】python 日期操作
datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day.datetime.time:表示时间的类.常用的属性有hour, mi ...
- python 选择文件对话框插件_[ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件/目录选择对话框...
本文主要介绍PyQt界面实现中常用的消息弹出对话框.提供用户输入的输入框.打开文件获取文件/目录路径的文件对话框.学习这三种控件前,先想一下它们使用的主要场景: 1.消息弹出对话框.程序遇到问题需要退 ...
最新文章
- C++_volatile限定修饰符 Pair类型
- 转:C#读取Excel文件 (2009年9月28日)
- [SCOI2005]扫雷
- 直击“上云”痛点的 MSP 新生意
- MySQL DBA面试高频三十问
- pytorch AUTOGRAD
- php sorcket_深入浅出讲解:php的socket通信
- 「力扣」509. 斐波那契数【动态规划】详解!
- spss案例教程主成分分析与因子分析及SPSS实现
- Webmax简易入门操作手册(二)
- 中小型企业网络IP地址规划案例-1
- kettle 创建脚本文件
- Bicubic介绍及Python实现
- 华为太极magisk安装教程_怎么升级Magisk到最新19.4版本-正确刷入Magisk,获取ROOT教程...
- 陈天桥的大脑在孕育什么新传奇(转)
- 电脑分区合并——灰色解决方法
- 我能够快速读书的秘密:主要靠“猜”!
- 解决word中插入visio对象的图片大小修改问题
- 人工智能与深度神经网络,人工智能深度神经网络
- VS CODE 使用介绍
热门文章
- sql etl_使用SQL TRY函数进行ETL优化
- 十年测试之路的笔记分享
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...
- Selenium(Python)页面对象+数据驱动测试框架
- Hibernate api 之常见的类(配置类,会话工厂类,会话类)
- 关于Android sdkmanager目录结构的总结
- 续php的一些基本概念
- db4o官方入门教程翻译--06.集合和数组
- Java的getperiod_Java中的Period getYears()方法
- 【自学系列一】HTML5大前端学习路线+视频教程(完整版)