一个更详细的Tkinter笔记:

首先是最重要基础的,如何

创建一个窗口

窗口代码:

#coding:utf8
import Tkinter
show = Tkinter.Tk()
show.title("我的窗口")
show.geometry('150x150')
show.resizable(width=True,height=False)
# 进入消息循环
#print show.keys()
show.mainloop()

如图:

创建窗口的常用属性:

  • title: 设置窗口标题
  • geometry: 设置窗口大小
  • resizable():设置窗口是否可以变化长、宽

代码中的print show.keys()输出窗口的基本属性:

['bd', 'borderwidth', 'class', 'menu', 'relief', 'screen', 'use',
'background', 'bg', 'colormap', 'container', 'cursor', 'height',
'highlightbackground', 'highlightcolor', 'highlightthickness', 'padx',
'pady', 'takefocus', 'visual', 'width']

可以像这样设置这些属性:

show['bg']='lightblue'
show['height']=100

Tkinter的其他控件:

Button

Label

Entry

Text

Checkbutton

Radiobutton

每个控件都要加上pack()才能显示!

Button

def say_hi():
print 'hello' b=tk.Button(text='hello',command=say_hi)
b.pack()
b1=tk.Button(text='quit',command=quit)
b1.pack()

如图:

第一个按钮,输出'hello'

第二个按钮关闭窗口

可以在代码中 print b.keys()查看Button的相关属性,并使用b['xxx']=xxx设置相关属性。

['activebackground', 'activeforeground', 'anchor', 'background', 'bd', 'bg', 'bitmap', 'borderwidth', 'command', 'compound', 'cursor', 'default', 'disabledforeground', 'fg', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'justify', 'overrelief', 'padx', 'pady', 'relief', 'repeatdelay', 'repeatinterval', 'state', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength']

Label&&Text

label:标签控件;可以显示文本和位图。

Text:文本控件;用于显示多行文本。

l=tk.Label(text='hello')
l['bg']='red'
l['foreground']='blue'
l['font']=15
l.pack()
t=tk.Text(width=100,height=100)
t.insert(1.0,'insert into text')
t.pack()

text中还可以插入按钮,插入图片,示例:

#coding:utf8
from Tkinter import * show = Tk()
text = Text(show,width=30,height=15)
#text插入按钮
b1 = Button(text,text='click me',command=quit)
text.window_create(INSERT,window=b1)
#text插入图片
img = PhotoImage(file='beauty.gif')
text.image_create(END,image=img)
text.pack()
mainloop()

这里想说一下,img = PhotoImage(file='beauty.gif')中只能是gif,jpg图片不行,会报错。

(但是你gif运行出来也不会动啊喂!)

Entry

Entry     文本输入框

还是老样子

e=tk.Entry()
e.insert(1,'哈哈哈哈嚯')#插入数据
e.pack()

怎么获得文本框的值:

按Enter键,输出Entry的值。

#coding:utf8
from Tkinter import *
def show(event=None):
print (e.get())
root = Tk()
u=StringVar()
e=Entry(root,textvariable=u)
e.pack()
e.bind('<Button>',show)
root.mainloop()

Radiobutton单选框&&Checkbox多选框

直接贴代码:

单选框点击选择哪个选项,那么就在上方label显示你的选项。

多选框点击选择哪个选项,那么就在下方label显示你的选项。

#coding:utf8
from Tkinter import *
import tkMessageBox
def show(event=None):
str="you select "+u.get()
#l['text']=str label没有set方法,可以这样设置内容
l.config(text=str)
def show1(event=None):
list=["like"]
if a.get()==True:
list.append("bird")
elif "bird" in list:
list.remove("bird")
if b.get()==True:
list.append("rabbit")
elif "rabbit" in list:
list.remove("rabbit")
if c.get()==True:
list.append("tiger")
elif "tiger" in list:
list.remove("tiger")
print list
clabel['text']=list
root = Tk()
#单选框
l=Label(root,text="you select read book")
l.pack()
u=StringVar()
u.set("no")
rb1=Radiobutton(root,text='book',variable=u,value="read book",command=show)
rb2=Radiobutton(root,text='movie',variable=u,value="watch movie",command=show)
rb3=Radiobutton(root,text='game',variable=u,value="play games",command=show)
rb1.select() #不写这句的话,默认初始状态三个都被勾选
rb1.pack()
rb2.pack()
rb3.pack()
a=BooleanVar()
b=BooleanVar()
c=BooleanVar()
#复选框
cb1=Checkbutton(root,text="bird",variable=a,command=show1)
cb2=Checkbutton(root,text="rabbit",variable=b,command=show1)
cb3=Checkbutton(root,text="tiger",variable=c,command=show1)
cb1.pack()
cb2.pack()
cb3.pack()
clabel=Label(root,text="")
clabel.pack()
root.mainloop()

贴图:

python_Tkinter1的更多相关文章

随机推荐

  1. 读取excel 文件到datatable

    上一篇文章介绍了将datatable 内容导出到excel 文件,这里介绍如何将一个excel 文件读取出来,并保持到datatable 中,实际这样的应用场景也是经常遇到的. 这里继续使用了Micr ...

  2. rabbitMQ 在 windows 64位环境下无法启动(提示乱码)的解决方法

    执行start命令时,提示乱码 解决方法: Set the environment variable “RABBITMQ_BASE” to “c:\rabbitmq”, uninstall the s ...

  3. Telegraf安装与介绍

    Telegraf 是什么? Telegraf 是一个用 Go 编写的代理程序,是收集和报告指标和数据的代理.可收集系统和服务的统计数据,并写入到 InfluxDB 数据库.Telegraf 具有内存占 ...

  4. EMQ消息队列初体验

    使用命令创建admin用户,密码123 emqx_ctl users add admin 配置规则/etc/emqx/acl.conf(除管理员,其他用户只能订阅限定的测试主题路径) %% 允许'ad ...

  5. dubbo 在不同协议下携带上下文区别

    如果走原生的dubbo协议,RpcContext.getContext()里的attarchments和values 是能够在节点间传递的 但如果hessian协议,attarchments和valu ...

  6. 算法——001BitMap(位图)算法

    哈希表在查找定位操作上具有O(1)的常量时间,常用于做性能优化,但是内存毕竟是有限的,当数据量太大时用哈希表就会内存溢出了.而考虑对这些大数据进行存盘分批处理又有IO上的开销,性能又不能满足要求.这个 ...

  7. elasticsearch 5.0以上不支持consistency 和 quorum

    从ES2.2升级到5.2后,原先执行put 带 consistency=all / quorum 参数的,都报错了,提示语法错误.. 百度查了一通,都没发现相关问题.无奈,还是查官方文档.. 发现这是 ...

  8. oracle Extract 函数

    //oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分   //语法如下:   EXTRACT (           { Y ...

  9. 微信小程序之弹出操作菜单

    <view class="List_count" bindtap="actioncnt"> <view class="img&quo ...

  10. java类的生命周期

    https://www.cnblogs.com/aspirant/p/7200523.html 验证的内容:文件格式,字节码,符号引用,元数据 准备:给静态变量分配内存设置初始值(0) 初始化才是真正 ...