Label(标签控件,可以显示文本)
from tkinter import *# 这样导入包后面引用库里的东西不需要库名前缀#import tkinter这种导入方式需要 win = Tk() win.title('窗口') win.geometry('400x300+200+100')#x是英文字母小写x 窗口的长x宽+屏幕左上角距离 label = Label(win,text='这是一个标签',bg='pink',fg='red',font=("黑体",20),width=20,height=10,wraplength=100,justify="left", anchor="ne")) label.pack()#打包布局 win.mainloop()#显示窗口 ''' win:父窗体 text:显示的文本内容 bg:背景色 fg:字体颜色 font:字体 wraplength:指定text文本中多宽之后换行 justify:设置换行后的对齐方式 anchor:位置 n北,e东,w西,s南,center居中;还可以写在一起:ne东北方向'''Button(按钮控件,可绑定事件)
from tkinter import * def func(): print('Hello World') win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') bt1 = Button(win,text='绑定函数',command=func) bt1.pack() button3 = Button(win, text="按钮",\ command=lambda:print("bbbbbbbbbbbb")) button3.pack() bt2 = Button(win,text='退出',command=win.quit) bt2.pack() win.mainloop()Entry(输入控件,显示简单文本内容)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') #密文显示 entry1 = Entry(win,show='*')#show可以用于密码框输入 entry1.pack() #绑定变量 e = Variable() entry2 = Entry(win,textvariable=e) entry2.pack() e.set('你好啊!')#给e设定一个值 print(e.get())#打印e的取值 print(entry2.get())#打印e的值在entry2里面 win.mainloop()Text(文本控件,显示多行文本)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') scroll = Scrollbar()#创建滚动条 scroll.pack(side=RIGHT,fill=Y) text = Text(win, width=30, height=10)#height显示行数 text.pack(side=LEFT,fill=Y) scroll.config(command=text.yview) text.config(yscrollcommand=scroll.set) str = '''盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。''' text.insert(tkinter.INSERT, str) win.mainloop()Menu(顶层菜单)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') menubar = Menu(win)#菜单条 win.config(menu=menubar) def func(): print('你好啊!') menu1 = Menu(menubar,tearoff=False)#创建一个菜单选项 for item in ['python','c','java','c++','c#','php','B','退出']: if utem == '退出': menu1.add_separator()#添加分隔线 menu1.add_command(label=item,command=win.quit) else: menu1.add_command(label=item,command=func) menubar.add_cascade(label='语言',menu=menu1)#向菜单条添加菜单选项 def showMenu(event): menubar.post(event.X_root,event.y_root) win.bind('<Button-3>',showMenu)#鼠标右键菜单(1,2,3->左,中,右键) win.loop()Frame(框架控件:桌面上显示一个矩形区域,作为容器控件)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') fr = Frame(win) fr.pack() fr1 = Frame(fr) Label(fr1,text='左上',bg='pink').pack(side=TOP) Label(fr1,text='左下',bg='blue').pack(side=TOP) fr1.pack(side=LEFT) fr2 = Frame(fr) Label(fr2,text='右上',bg='green').pack(side=TOP) Label(fr2,text='右下',bg='red').pack(side=TOP) fr2.pack(side=RIGHT) win.mainloop()place(绝对布局,窗口变化对位置没有影响)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') label1 = Label(win,text='good',bg='blue') label2 = Label(win,text='nice',bg='red') label3 = Label(win,text='cool',bg='green') label1.place(x=10,y=10) label2.place(x=10,y=50) label3.place(x=10,y=100) win.mainloop()pack(相对布局,窗体改变对控件有影响)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') label1 = Label(win,text='good',bg='blue') label2 = Label(win,text='nice',bg='red') label3 = Label(win,text='cool',bg='green') label1.pack(fill=Y,side=LEFT) label2.pack(fill=X,side=TOP) label3.pack() win.mainloop()grid(表格布局)
from tkinter import * win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') label1 = Label(win,text='good',bg='blue') label2 = Label(win,text='nice',bg='red') label3 = Label(win,text='cool',bg='green') label4 = Label(win,text='handsome',bg='yellow') label1.grid(row=0,column=0) label2.grid(row=0,column=1) label3.grid(row=1,column=0) label4.grid(row=1,column=1) win.mainloop()表格数据
from tkinter import * from tkinter import ttk win = Tk() win.title('窗口标题') win.geometry('400x300+200+100') table = ttk.Treeview(win) table.pack() table['columns'] = ('姓名','年龄','身高','体重')#定义列 table.column('姓名',width=100)#设置列 列不显示 table.column('年龄',width=100) table.column('身高',width=100) table.column('体重',width=100) #设置表头 table.heading('姓名',text='姓名-name') table.heading("年龄", text="年龄-age") table.heading("身高", text="身高-height") table.heading("体重", text="体重-weight") #添加数据 table.insert("", 0, text="line1", values=("小郑","34","177cm","70kg")) table.insert("", 1, text="line2", values=("小张","43","188cm","90kg")) win.mainloop()