具体参考网址:http://c.biancheng.net/tkinter/
1 控件
Tkinter模块提供了2种 Toplevel 控件和许多基本控件,目前已包括15种,每种控件都有很多属性
简单示例:
1 from tkinter import *#导入tkinter模块【必要步骤】
2
3 root = Tk()#创建主窗口【必要步骤】
4 #将该窗口赋值给root变量,方便后续使用
5
6 root.mainloop()#主窗口进入消息事件循环【必要步骤】
输出如下:
代码解释:
在tkinter模块中,我们用Tk()函数(T要大写)去创建一个主窗口,用mainloop()方法使主窗口进入消息事件循环,这很重要,如果没有使主窗口进入消息事件循环,那么主窗口就只会在屏幕上闪一下就消失了,或者闪都没有闪一下,根本没有出现。
mainloop()方法的位置一定是放在最后,你可以把它理解成一个巨大的循环,使主窗口显示这个程序一直执行(所以主窗口一直显示在屏幕上),类似于循环。
实际上Tk是一个tkinter的控件,但它不属于基本控件,而是属于Toplevel控件中的一种容器控件,tkinter模块的Toplevel控件中有两种容器控件,一个是产生主窗口的Tk容器控件,另一种是产生子窗口的Toplevel控件(名字雷同,但不是同一个东西)
2 窗口属性
1 from tkinter import *#导入tkinter模块
2
3 root = Tk()#创建主窗口
4
5 root.title('主窗口')#设置标题
6 root.geometry('960x480+150+100')#设置窗口大小及位置
7 root.wm_attributes('-alpha',0.7)#设置透明度为0.7
8 root.resizable(0,0)#窗口大小不可更改
9
10 toplevel = Toplevel(root)#创建子窗口
11 toplevel.title('子窗口')#设置标题
12
13 root.mainloop()#主窗口进入消息事件循环
3 代码示例
1 # -*-coding:utf-8-*-
2 from tkinter import *
3 import tkinter.messagebox as messagebox
4 #导入ttk模块,因为下拉菜单控件在ttk中
5 from tkinter import ttk
6
7 class DEMO:
8 def __init__(self, master=None):
9 self.root = master
10 #设置窗体宽度为600,高度为400,窗体左上角在距离屏幕左上角横纵坐标均为100。
11 self.root.geometry('600x400+200+200')
12 self.root.title('Demo')
13 self.frm1 = Frame(self.root)
14 self.createpage()
15
16 def createpage(self):
17
18 #frm1初始画布配置,基本设置
19 self.frm1.config(width=600, height=400)
20
21 Label(self.frm1, text=' 基本设置',fg='black',font='Verdana 10 bold').place(in_=self.frm1, anchor=NW)
22 self.frm1.place(x=0, y=20)
23
24 Label(self.frm1, text='组合框:').place(x=50, y=30)
25
26 self.list1 = ttk.Combobox(self.frm1)
27 self.list1['value'] = ("COM1","COM2","COM3", "COM4","COM5","COM6", "COM7","COM8","COM9")
28 self.list1.current(0)
29 self.list1.place(x=100, y=30)
30
31 self.button1 = Button(self.frm1, text='Button1', command=self.button1,width = 10)
32 self.button1.place(x=300, y=30)
33
34 self.button2 = Button(self.frm1, text='Button2', command=self.button2,width = 10)
35 self.button2.place(x=420, y=30)
36
37 Label(self.frm1, text=' 高级设置',fg='black',font='Verdana 10 bold').place(x=0, y=120)
38
39 Label(self.frm1, text='组合框:').place(x=50, y=150)
40
41 Label(self.frm1, text='编辑框:').place(x=50,y=190)
42
43 self.list2 = ttk.Combobox(self.frm1, width=12)
44 self.list2['value'] = ("111","222","333", "444","555","666")
45 self.list2.current(0)
46 self.list2.place(x=120, y=150)
47
48 self.text_url = Entry(self.frm1, validate='key', width=60)
49 self.text_url.insert(0, 'baidu.com')
50 self.text_url.place(x=120, y=190)
51
52 self.button3 = Button(self.frm1, text='button3', command=self.button3,width = 10)
53 self.button3.place(x=230, y=250)
54
55 self.text_status = Entry(self.frm1,validate='key', width=150, bg='gray')
56 self.text_status.insert(0,"状态显示区,所有操作状态均在此显示")
57 self.text_status.place(x=0, y=360)
58
59 def button1(self):
60 test = self.list1.get()
61 print("button1",test)
62
63 def button2(self):
64 print("button2")
65
66 def button3(self):
67 print("button3")
68
69 if __name__ == '__main__':
70 root = Tk()
71 DEMO(root)
72 mainloop()
运行结果如下: