欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python gui 之库tkinter笔记

程序员文章站 2022-04-11 17:48:42
...
python gui 之库tkinter笔记

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()