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