Python Tkinter教程

具体参考网址: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()

运行结果如下:

 

参考文章:

https://blog.csdn.net/weixin_62651706/article/details/122815819

https://blog.csdn.net/weixin_62651706/article/details/122813713?spm=1001.2014.3001.5501

posted @ 2023-01-03 16:40  冰雪2021  阅读(471)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css