我想在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日期控件 | 学步园相关推荐

  1. Java控件模糊半透明_Android如何实现模糊的半透明窗口 | 学步园

    本示例使用自定义主题样式,实现模糊半透明的Activity. 1.  定义清单文件(AndroidManifest.xml) package="my.android.test" a ...

  2. python源码深度剖析_Python源码剖析——深度探索动态语言核心技术 | 学步园

    8.3  Python虚拟机的运行框架 当Python启动后,首先会进行Python运行时环境的 初始化.注意这里的运行时环境是一个与上一节剖析的执行环境不同的概念.运行时环境是一个全局的概念,而执行 ...

  3. 日结算 java_建设银行支付接口,按日期查询已结算订单xml接口解析(JAVA版) | 学步园...

    建行的查询接口不如招行那么全面,建行没有提供按单订单号查询,而且如果你查询的日期没有一笔成功的订单会直接返回一个html告诉你没有信息,并且如果你跨天查询,订单很多很多,他也会返回一个html告诉你订 ...

  4. python数字转对应中文_python中将阿拉伯数字转换成中文的实现代码 | 学步园

    复制代码 代码如下: #!/usr/bin/python #-*- encoding: utf-8 -*- import types class NotIntegerError(Exception): ...

  5. python socket接收图像 数据_python中socket接受数据的三种方法 | 学步园

    原位置:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/408859 Description: An issue with socket ...

  6. python模拟浏览器下载文件_python第一个脚本,模拟浏览器下载文件 | 学步园

    用wget命令下载文件总是失败.用python脚本模拟浏览器下载,代码如下: #!/usr/bin/python import sys from urllib import FancyURLopene ...

  7. python max函数key_Python标准库:内置函数max(iterable, *[, key, default]) | 学步园

    max(arg1, arg2, *args[, key]) 本函数是迭代对象iterable进行比较,找出最大值返回.当key参数不为空时,就以key的函数对象为判断的标准. 例子: #max() a ...

  8. python选择日期控件_【Python】python 日期操作

    datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day.datetime.time:表示时间的类.常用的属性有hour, mi ...

  9. python 选择文件对话框插件_[ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件/目录选择对话框...

    本文主要介绍PyQt界面实现中常用的消息弹出对话框.提供用户输入的输入框.打开文件获取文件/目录路径的文件对话框.学习这三种控件前,先想一下它们使用的主要场景: 1.消息弹出对话框.程序遇到问题需要退 ...

最新文章

  1. C++_volatile限定修饰符 Pair类型
  2. 转:C#读取Excel文件 (2009年9月28日)
  3. [SCOI2005]扫雷
  4. 直击“上云”痛点的 MSP 新生意
  5. MySQL DBA面试高频三十问
  6. pytorch AUTOGRAD
  7. php sorcket_深入浅出讲解:php的socket通信
  8. 「力扣」509. 斐波那契数【动态规划】详解!
  9. spss案例教程主成分分析与因子分析及SPSS实现
  10. Webmax简易入门操作手册(二)
  11. 中小型企业网络IP地址规划案例-1
  12. kettle 创建脚本文件
  13. Bicubic介绍及Python实现
  14. 华为太极magisk安装教程_怎么升级Magisk到最新19.4版本-正确刷入Magisk,获取ROOT教程...
  15. 陈天桥的大脑在孕育什么新传奇(转)
  16. 电脑分区合并——灰色解决方法
  17. 我能够快速读书的秘密:主要靠“猜”!
  18. 解决word中插入visio对象的图片大小修改问题
  19. 人工智能与深度神经网络,人工智能深度神经网络
  20. VS CODE 使用介绍

热门文章

  1. sql etl_使用SQL TRY函数进行ETL优化
  2. 十年测试之路的笔记分享
  3. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...
  4. Selenium(Python)页面对象+数据驱动测试框架
  5. Hibernate api 之常见的类(配置类,会话工厂类,会话类)
  6. 关于Android sdkmanager目录结构的总结
  7. 续php的一些基本概念
  8. db4o官方入门教程翻译--06.集合和数组
  9. Java的getperiod_Java中的Period getYears()方法
  10. 【自学系列一】HTML5大前端学习路线+视频教程(完整版)