python tkinter_一小时掌握基本知识(上)
2016-11-01 20:28
489 查看
**1. Label
2. Button
3. Entry
4. Checkbutton
5. Radiobutton
6. Listbox
7. Scale
8. Spinbox**
python tkinter比较容易掌握,所以本博文旨在让已经有python基础的人用最短的时间掌握关于py tkinter的基本知识,从而快速进入自己的界面编程
这一篇主要包括上面8个知识点,当你快速看下来的时候,一定要将这里的所有代码运行一遍,有必要则适当修改,看运行的改变从而更好掌握。代码不长(这里贴的代码基于python3,用python2则把tkinter改成Tkinter)
1.Label:
知识总结:
其他内置位图:
* hourglass
* info
* questhead
* question
* warning
* gray12
* gray25
* gray50
* gray75
颜色:
背景色:bg = ‘blue’/’#ff0000’
前景色:fg
Red
Green
Blue
Yellow
LightBlue
宽度:width
pady
延展:
fill = BOTH/X/Y/None水平/竖直延展
normal bold roman italic underline overstrike( or combinations like: bold italic )
当指定center时,文本(text)将被覆盖,只显示图像了。可以使用的值:
left: 图像居左
right: 图像居右
top: 图像居上
bottom:图像居下
center:文字覆盖在图像上
justify: 指定多行的对齐方式
ahchor: 指定文本(text)或图像(bitmap/image)在 Label 中的显示位置
e/w/n/s/ne/se/sw/sn/center
布局如下图
nw n ne
w center e
sw s se
代码:
运行截图:
2.Button:
知识总结:
relief = FLAT
正常 normal
激活 active
禁用 disabled
variable_name.get()取text的值
variable_name.set(‘new_text_name’)设置text的值
image = image_object
或者
button_name.bind(“”,func_name) func_name(event)须带参数,传递事件消息
代码:
运行截图:
3.Entry:
没有height/anchor属性
运行截图:
4.Checkbutton:
onvalue = ’ ‘, #设置 On 的值
offvalue = ’ ‘, #设置 Off 的值
5.Radiobutton:
value相同完全一样
value相同绑定相同事件函数则点击时只调用一次函数
indication = 0 / 1 外观效果
6.Listbox:
selectmode = MUTIPLE支持多选,类似Checkbutton
selectmode = BROWSE支持鼠标拖动选中区域
selectmode = SINGLE不支持鼠标拖动选中区域
selectmode = EXTENDED支持shift/ctrl操作选择
.delete(first,last)
.delete(0,END)删除全部
.selection_clear(first,last)
.get(first,last)
lb[‘listvariable’] = v
可以用v.get()得到list的items值,返回一个tuple
可以用v.set(tuple)更改list的items值
print (lb.get(lb.curselection()))
lb = Listbox(root,selectmode = EXTENDED)
lb.bind(‘’,printList)#左键双击
7.Scale:
from_ = min_value 最小值
to = max_value 最大值
resolution = step_value 步长
orient = HORIZONTAL 水平方向,默认为垂直方向
print(‘text=’,text)
print(‘v=’,v.get())
属性command= print_scale
.get()
8.Spinbox:
from_ = min_value最小值
to = max_value最大值
increment = step 类似scale的resolution
后续。。。
2. Button
3. Entry
4. Checkbutton
5. Radiobutton
6. Listbox
7. Scale
8. Spinbox**
python tkinter比较容易掌握,所以本博文旨在让已经有python基础的人用最短的时间掌握关于py tkinter的基本知识,从而快速进入自己的界面编程
这一篇主要包括上面8个知识点,当你快速看下来的时候,一定要将这里的所有代码运行一遍,有必要则适当修改,看运行的改变从而更好掌握。代码不长(这里贴的代码基于python3,用python2则把tkinter改成Tkinter)
1.Label:
知识总结:
文本内容
text = label_text指定内置位图
bitmap = ‘error’其他内置位图:
* hourglass
* info
* questhead
* question
* warning
* gray12
* gray25
* gray50
* gray75
颜色:
背景色:bg = ‘blue’/’#ff0000’
前景色:fg
Red
Green
Blue
Yellow
LightBlue
规格:
高度:height宽度:width
边框padding
padxpady
延展:
fill = BOTH/X/Y/None水平/竖直延展
字体:
Times Courier Helvetica( font family )normal bold roman italic underline overstrike( or combinations like: bold italic )
文本图像位置
compound: 指定文本(text)与图像(bitmap/image)是如何在 Label 上显示,缺省为 None,当指定center时,文本(text)将被覆盖,只显示图像了。可以使用的值:
left: 图像居左
right: 图像居右
top: 图像居上
bottom:图像居下
center:文字覆盖在图像上
多行显示控制
wraplength: 指定多少单位后开始换行justify: 指定多行的对齐方式
ahchor: 指定文本(text)或图像(bitmap/image)在 Label 中的显示位置
e/w/n/s/ne/se/sw/sn/center
布局如下图
nw n ne
w center e
sw s se
代码:
from tkinter import * root = Tk() root.title('label test') label = Label( root, bg = 'lightblue', fg = 'red', font = ('times',15,'bold'), text = 'this is my first label.welcome to python tkinter', width = 15 , height = 8, wraplength = 120, anchor = 'n', justify = 'left') label.pack(padx = 15,pady = 20,fill = BOTH) bm = PhotoImage(file = 'G:/file_code/sublime/temp.png') label2 = Label( root, text = 'an image', compound = 'top', image = bm) label2.pack() label3 = Label(root,bitmap = 'error',text = 'error bitmap',compound = 'left').pack(fill = X) root.mainloop()
运行截图:
2.Button:
知识总结:
文本
text = button_name颜色
bg/fg外观
flat, groove, raised, ridge, solid, sunkenrelief = FLAT
状态
state:指定组件状态:正常 normal
激活 active
禁用 disabled
绑定变量
textvariable = variable_namevariable_name.get()取text的值
variable_name.set(‘new_text_name’)设置text的值
位图/图像
bitmap = 位图image = image_object
事件处理函数
command = func_name或者
button_name.bind(“”,func_name) func_name(event)须带参数,传递事件消息
代码:
from tkinter import * root = Tk() v = StringVar() v.set('mybutton') def print_button_name(): print(v.get()) if v.get() =='mybutton': v.set('yourbutton') name['anchor'] = 'n' else: v.set('mybutton') name['anchor'] = 's' name =Button(root,bd = 10, text = 'mybutton',textvariable = v, state = 'active',anchor = 's',width = 20 , height = 2, bg = 'lightblue', fg = 'red', relief = RAISED, font = ( 'Helvetica',15,'italic'), command = print_button_name) name.pack() for i in [ 'top','right','bottom','left','center']: Button(root, text = i, compound = i, bitmap = 'error').pack() im = PhotoImage(file = 'G:/file_code/sublime/temp.png') for i in [ 'top','right','bottom','left','center']: Button(root, text = i, compound = i, image = im).pack() root.mainloop()
运行截图:
3.Entry:
设置Entry的状态=’readonly’
Entry 的属性值可以使用的也为 normal/active/disabled,’readonly’与 disabled 一样设置默认字符显示
show = ‘*’ 密码输入其他属性
其他的属性 fg/bg/relief/width/height/justify/state 使用方法与 Button 相同没有height/anchor属性
from tkinter import * root = Tk() e1 = StringVar() st = ['normal','disabled','readonly'] for s in st: entry1 = Entry(root,textvariable=e1,state=s,width = 20 , bg = 'lightblue',fg = 'red',justify = 'left',relief = RAISED,font = ('times', 20 , 'italic')) e1.set('input your text') entry1.pack(padx = 15,pady = 15) e2 = StringVar() entry2 = Entry(root,textvariable = e2,show = '*',bg = 'yellow',relief = RAISED,font = ('times', 20 , 'italic')) e2.set('password') entry2.pack(padx = 20 ,pady = 20) def change(content = None): key = entry3.get() sv.set('['+key+']') print(key) sv = StringVar() entry3 = Entry(root,textvariable=sv,font = ('times', 20 , 'italic')) entry3.bind('<Return>',change) #按enter建触发 entry3.pack(padx = 15 ,pady = 15) root.mainloop()
运行截图:
4.Checkbutton:
onvalue = ’ ‘, #设置 On 的值
offvalue = ’ ‘, #设置 Off 的值
from tkinter import * root = Tk() def callCB(): if sv.get()=='on': sv.set('off') else: sv.set('on') sv = StringVar() lb = Label(root,textvariable=sv,font='times'+'30'+'normal') sv.set('off') lb.pack(side='left',anchor='nw') cb = Checkbutton(root,text='on/off',command=callCB,width = 4 ,height = 2 , fg = 'red', bg = 'lightblue') cb.pack(side='left',anchor='nw',padx = 5, pady = 5) sta = IntVar() def callCButton(): print(sta.get()) Checkbutton(root,variable=sta,text='checkbutton value1',command=callCButton, relief = RAISED).pack(anchor='w',padx = 5,pady = 5) onoff = StringVar() onoff.set(0) def callonoff(): print(onoff.get()) Checkbutton(root,variable = onoff, text = 'checkbutton value2', onvalue='on',offvalue='off', command=callonoff).pack() root.mainloop()
5.Radiobutton:
value相同完全一样
value相同绑定相同事件函数则点击时只调用一次函数
indication = 0 / 1 外观效果
from tkinter import * root = Tk() Radiobutton(root,text='python' ).pack() Radiobutton(root,text='tkinter').pack() Radiobutton(root,text='widget' ).pack() v = IntVar() v.set(1) for i in range(3): Radiobutton(root,variable=v,text='python',value=i,width = 7,height = 2,fg = 'red',bg = 'lightgreen').pack(pady = 3) vLang = IntVar() vOS = IntVar() vLang.set(1) vOS.set(2) for var in [vLang,vOS]: for i in range(3): Radiobutton(root,variable=var,value=i,text='python'+str(i),fg = 'red',bg = 'lightblue').pack(pady = 3) idon = IntVar() idon.set(1) for i in range(3): Radiobutton(root,variable=idon,indicatoron=0,text = 'hello',value=i,width = 5,height = 2,fg = 'red',bg = 'lightblue').pack() root.mainloop()
6.Listbox:
selectmode = MUTIPLE支持多选,类似Checkbutton
selectmode = BROWSE支持鼠标拖动选中区域
selectmode = SINGLE不支持鼠标拖动选中区域
selectmode = EXTENDED支持shift/ctrl操作选择
末尾插入
lb.insert(END,item)只添加一个 item 将[]作为一个 item
lb.insert(0,[‘linux’,’windows’,’unix’])添加三个 item,每个 string 为一个 item
lb.insert(0,’linux’,’windows’,’unix’)删除
.delete(first).delete(first,last)
.delete(0,END)删除全部
多项选择,多项取消
.selection_set(first,last).selection_clear(first,last)
item个数
.size()返回指定索引的items
.get(first).get(first,last)
绑定变量
v= StringVar()lb[‘listvariable’] = v
可以用v.get()得到list的items值,返回一个tuple
可以用v.set(tuple)更改list的items值
返回当前选中的items
.curselection()返回索引位置的items是否处于选中状态,true/false
.selection_includes(index)绑定事件,不支持command,可以用bind绑定
def printList(event):print (lb.get(lb.curselection()))
lb = Listbox(root,selectmode = EXTENDED)
lb.bind(‘’,printList)#左键双击
from tkinter import * root = Tk() v = StringVar() def printList(event): print (lb.get(lb.curselection())) lb = Listbox(root,listvariable = v,selectmode = EXTENDED,bg = 'lightblue',fg = 'red',width = 30,height = 20,font = ('time',15,'italic')) lb.bind('<Double-Button-1>',printList) for i in range(10): lb.insert(END,str(i)) lb.insert(0,['linux','windows','unix']) lb.insert(0,'linux','windows','unix') lb.insert(END,'hello world') #lb.delete(END) #lb.delete(0,3) lb.selection_set(0,10) lb.selection_clear(1,3) print(lb.size()) print(lb.get(3,7)) print(lb.curselection()) print(lb.selection_includes(1)) print(lb.selection_includes(7)) print(v.get()) #v.set(('100','200')) lb.pack(padx = 10,pady = 30) root.mainloop()
7.Scale:
from_ = min_value 最小值
to = max_value 最大值
resolution = step_value 步长
orient = HORIZONTAL 水平方向,默认为垂直方向
回调函数
def print_scale(text):print(‘text=’,text)
print(‘v=’,v.get())
属性command= print_scale
设置数字显示位数
digits = num设置值,取值
.set(value).get()
from tkinter import * root = Tk() v = StringVar() def print_scale(text): print('text=',text) print('v=',v.get()) s = Scale(root,from_ = -400,to = 400,resolution = 5,orient = HORIZONTAL,variable = v, command = print_scale, digits = 6, label = 'hello', width = 25,fg = '#885533',bg = 'lightblue') s.set(50) print(s.get()) s.pack() root.mainloop()
8.Spinbox:
from_ = min_value最小值
to = max_value最大值
increment = step 类似scale的resolution
设置值
values = tuplefrom tkinter import * root = Tk() v = StringVar() def printSpin(): print(v.get()) print(sb.get()) # sb = Spinbox(root,values = (0,10,5,20,35,3),increment = 2) # print(sb['values']) sb = Spinbox(root,from_ = 100, to = 999, increment = 0.5,command = printSpin,width = 20,fg = 'red',bg = 'lightblue',textvariable = v) sb.pack(padx = 10,pady = 10) root.mainloop()
后续。。。
相关文章推荐
- 测试人员的基本技能要求 - 快速掌握业务知识的能力
- Android必须掌握的基本知识
- 简要说明python的一些基本知识(三)
- Python基本知识
- Python的魔法(一): 基本知识
- Python基本知识
- python基础知识——基本语法
- 简要说明python的一些基本知识
- 必须掌握的JavaScript基本知识
- OpenCV Python API 和 Python 之类的基本知识
- Python基础知识(三)--基本的异常处理、算术运算符、输入/输出
- python基本知识总结
- php/掌握基本知识
- 简要说明python的一些基本知识(二)
- 【翻译】前端开发者应掌握的基本知识
- 路由知识最基本的掌握
- python 爬虫基本知识
- python 爬虫基本知识
- Python零碎知识(3):对文件的基本操作
- Python -- Gui编程 -- Tkinter的使用 -- 基本控件