在网易云课堂学习到了以下知识,云课堂地址:
用 python 和 tkinter 做简单的窗口视窗
作者莫烦的主页:https://morvanzhou.github.io/tutorials/
优酷视频主页:http://i.youku.com/i/UMTYyNjI2NDYw
第一个程序,学习生成窗口,按钮和Label:(参看视频:http://study.163.com/course/courseLearn.htm?courseId=1003216011#/learn/video?lessonId=1003649325&courseId=1003216011)
import tkinter as tk #导入tkinter,并重新命名为tk,以后调用就可以少写代码
mywindow=tk.Tk() #新建窗口mywindow
mywindow.title('A Window named by TAHO') #给窗口命名为 A Window named by TAHO
mywindow.geometry('300x600') #窗口大小,300为宽,600为高,单位为像素px
var_label = tk.StringVar() #定义两个tk字符串变量
var_button = tk.StringVar()
var_button.set('Try to Click Me') #初始化button按钮上的字符串
on_click=False #定义布尔变量
def click_me(): #定义函数
global on_click
if on_click==False:
on_click=True
var_label.set('You just Clicked Me!')
var_button.set('Click to hide')
else:
on_click=False
var_label.set('')
var_button.set('Try to Click Me')
l=tk.Label(mywindow, textvariable=var_label,bg='yellow',font=('Arial',12),width=40, height=2) #建立一个Label,设定其属性
l.pack() #将Label显示到窗口中
b = tk.Button(mywindow, textvariable=var_button, width=40, height=2, command=click_me) #建立一个button,设定其属性
b.pack() #将button显示到窗口中
mywindow.mainloop() #循环刷新并显示窗口
运行结果:

第二个程序,学习文本输入框和文本框:(参考:http://study.163.com/course/courseLearn.htm?courseId=1003216011#/learn/video?lessonId=1003649327&courseId=1003216011)
import tkinter as tk #导入tkinter,并重新命名为tk,以后调用就可以少写代码
mywindow=tk.Tk() #新建窗口mywindow
mywindow.title('A Window named by TAHO') #给窗口命名为 A Window named by TAHO
mywindow.geometry('200x200') #窗口大小,300为宽,600为高,单位为像素px
e=tk.Entry(mywindow, show=None) #新建文字输入框
# e=tk.Entry(mywindow, show='*') #输入密码时的隐藏办法
e.pack() #显示输入框e到窗口中
def insert_point(): #定义函数
var=e.get()
t.insert('insert',var) #insert的意思就是插入到鼠标点击处,这是系统内置的
def insert_end(): #定义函数
var=e.get()
t.insert('end',var)
b1 = tk.Button(mywindow, text='inser to pointed', width=40, height=2, command=insert_point) #建立button1,设定其属性
b1.pack() #将button1显示到窗口中
b2 = tk.Button(mywindow, text='inser to end', width=40, height=2, command=insert_end) #建立button2,设定其属性
b2.pack() #将button2显示到窗口中
t=tk.Text(mywindow, height=2) #新建文本框
t.pack() #将文本框t显示到窗口中
mywindow.mainloop() #循环刷新并显示窗口
结果:

第三个程序,学习Listbox(参考:)
import tkinter as tk #导入tkinter,并重新命名为tk,以后调用就可以少写代码
mywindow=tk.Tk() #新建窗口mywindow
mywindow.title('A Window named by TAHO') #给窗口命名为 A Window named by TAHO
mywindow.geometry('200x300') #窗口大小,300为宽,600为高,单位为像素px
var_label=tk.StringVar() #定义tk里的字符串
l=tk.Label(mywindow,textvariable=var_label, bg='yellow', width=4) #建立一个Label
l.pack() #将Label显示到窗口中
def print_selected(): #定义函数
value =lb.get(lb.curselection()) #获得鼠标光标选中的值
var_label.set(value)
b1 = tk.Button(mywindow, text='print selected', width=20, height=2, command=print_selected) #建立button1,设定其属性
b1.pack() #将button1显示到窗口中
var_listbox=tk.StringVar() #定义一个listbox
var_listbox.set((11,22,33,44)) #建立listbox初始值
lb = tk.Listbox(mywindow,listvariable=var_listbox)
lb.pack()
list_items=[1,2,3,4] #建立数组
for item in list_items:
lb.insert('end',item) #用循环插入数组中的项
lb.insert(1,'first') #在第2行插入first,按索引的位置Index来插入
lb.insert(2,'second') #在第3行插入first
lb.delete(2) #删除索引2处的值
mywindow.mainloop() #循环刷新并显示窗口
运行结果:

第四个程序,学习RadioButton单选框,(参看:http://study.163.com/course/courseLearn.htm?courseId=1003216011#/learn/video?lessonId=1003651316&courseId=1003216011)
程序:
import tkinter as tk #导入tkinter,并重新命名为tk,以后调用就可以少写代码
mywindow=tk.Tk() #新建窗口mywindow
mywindow.title('A Window named by TAHO') #给窗口命名为 A Window named by TAHO
mywindow.geometry('200x200') #窗口大小,300为宽,600为高,单位为像素px
var_label=tk.StringVar() #定义tk里的字符串
l=tk.Label(mywindow,text='empty', bg='lightblue', width=20) #建立一个Label
l.pack() #将Label显示到窗口中
def print_selection(): #定义函数
l.config(text='You have selected '+var_label.get()) #生成字符串,用了+号连接
r1=tk.Radiobutton(mywindow, text='Option A', variable=var_label, value='A', command=print_selection) #生成第1个单选框
r1.pack()
r2=tk.Radiobutton(mywindow, text='Option B', variable=var_label, value='B', command=print_selection) #生成第2个单选框
r2.pack()
r3=tk.Radiobutton(mywindow, text='Option C', variable=var_label, value='C', command=print_selection) #生成第3个单选框
r3.pack()
mywindow.mainloop() #循环刷新并显示窗口
运行结果:

第五个程序,学习拖动条(Scale),(参看:)
程序代码:
import tkinter as tk #导入tkinter,并重新命名为tk,以后调用就可以少写代码
mywindow=tk.Tk() #新建窗口mywindow
mywindow.title('A Window named by TAHO') #给窗口命名为 A Window named by TAHO
mywindow.geometry('200x200') #窗口大小,300为宽,600为高,单位为像素px
l=tk.Label(mywindow,text='empty', bg='green', width=20) #建立一个Label
l.pack() #将Label显示到窗口中
def print_selection(v): #定义函数
l.config(text='You have selected '+ v) #生成字符串,用了+号连接
s = tk.Scale(mywindow, label='I am a bar~', from_=4, to=10, orient=tk.HORIZONTAL,
length=200, showvalu=False, tickinterval=2, resolution=0.01, command=print_selection)
#orient是横向竖向,showvalue是要不要在bar上显示数字,#tickinterval是标尺的最小分度,resolution=0.01表示保留两位小数
s.pack()
mywindow.mainloop() #循环刷新并显示窗口
运行结果:

附录:
Tkinter 组件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:
| 控件 | 描述 |
|---|---|
| Button | 按钮控件;在程序中显示按钮。 |
| Canvas | 画布控件;显示图形元素如线条或文本 |
| Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
| Entry | 输入控件;用于显示简单的文本内容 |
| Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
| Label | 标签控件;可以显示文本和位图 |
| Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
| Menubutton | 菜单按钮控件,由于显示菜单项。 |
| Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
| Message | 消息控件;用来显示多行文本,与label比较类似 |
| Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
| Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
| Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
| Text | 文本控件;用于显示多行文本 |
| Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
| Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
| PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
| LabelFrame | labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 |
| tkMessageBox | 用于显示你应用程序的消息框。 |
标准属性
标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。
| 属性 | 描述 |
| Dimension | 控件大小; |
| Color | 控件颜色; |
| Font | 控件字体; |
| Anchor | 锚点; |
| Relief | 控件样式; |
| Bitmap | 位图; |
| Cursor | 光标; |
几何管理
Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置
| 几何方法 | 描述 |
| pack() | 包装; |
| grid() | 网格; |
| place() | 位置; |
