篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python:GUI之tkinter学习笔记1控件的介绍及使用相关的知识,希望对你有一定的参考价值。
首发时间:2018-03-04 16:39
Python的GUI各有各特点。
由于只是轻微涉及GUI开发,所以就以轻量级的tkinter来学习。
geometry:窗口大小,大写格式是”宽度x高度+x位置+y位置”【注意不是*是x】,其中x,y将左上角作为(0,0)
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'500x500\')
root.mainloop()
Button所有的可设置参数
activebackground, activeforeground, anchor,
background, bitmap, borderwidth, cursor,
disabledforeground, font, foreground
highlightbackground, highlightcolor,
highlightthickness, image, justify,
padx, pady, relief, repeatdelay,
repeatinterval, takefocus, text,
textvariable, underline, wraplengthWIDGET-SPECIFIC OPTIONS【特有选项】:
command, compound, default, height,
overrelief, state, width
from tkinter import *
def hello():
print("hello")
root=Tk()
# RELIEF=["flat", "raised", "sunken", "solid", "ridge", "groove"]
btn1=Button(root,text=\'click me\')
btn1.config(bg=\'green\',fg=\'white\',cursor=\'hand1\',)
btn1.config(anchor=LEFT)
btn1.pack()
# for col,i in enumerate(RELIEF):
# btn=Button(root,text=i,relief=i,anchor=S)
# btn.grid(row=0,column=col)
root.mainloop()
STANDARD OPTIONS【label的标准可选参数】
activebackground, activeforeground, anchor,
background, bitmap, borderwidth, cursor,
disabledforeground, font, foreground,
highlightbackground, highlightcolor,
highlightthickness, image, justify,
padx, pady, relief, takefocus, text,
textvariable, underline, wraplength
WIDGET-SPECIFIC OPTIONS【特有选项】:
height, state, width
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'500x500\')
label=Label(text=\'用户名:\',bg=\'green\')
label.grid()
root.mainloop()
STANDARD OPTIONS【标准可用参数】
activebackground, activeforeground, anchor,
background, bitmap, borderwidth, cursor,
disabledforeground, font, foreground,
highlightbackground, highlightcolor,
highlightthickness, image, justify,
padx, pady, relief, takefocus, text,
textvariable, underline, wraplength
#这是一段没有显示Frame 代码
from tkinter import *
root=Tk()
root.geometry(\'500x500\')
frame=Frame(root,height = 200,width = 400,bg = \'black\')
Label(frame,text=\'mylabel\').pack()
frame.pack()
root.mainloop()
#下面是探究出缩水原因的代码
from tkinter import *
root=Tk()
root.geometry(\'500x500\')
frame=Frame(root,height = 400,width = 400,bg = \'green\')
button1=Button(frame,text=\'hello\')
button1.pack(side=LEFT,padx=5,pady=5)#增加了边距之后,发现出了frame的背景颜色
button2=Button(frame,text=\'hello\')
button2.pack(side=LEFT)
frame.pack(side=TOP)
root.mainloop()
#下面的是使用.pack_propagate(0)解决了问题的代码
from tkinter import *
root=Tk()
root.geometry(\'500x500\')
frame=Frame(root,height = 400,width = 400,bg = \'green\')
# Label(frame,text=\'mylabel\',padx=5,pady=5).pack(side=LEFT)
button1=Button(frame,text=\'hello\')
button1.pack(side=LEFT,padx=5,pady=5)
button2=Button(frame,text=\'hello\')
button2.pack(side=LEFT)
frame.pack_propagate(0)
frame.pack(side=TOP)
# frame.pack(side=TOP,fill=X)
root.mainloop()
Valid resource names:
background, bd, bg, borderwidth, class,
colormap, container, cursor, height, highlightbackground,
highlightcolor, highlightthickness, menu, relief, screen, takefocus,
use, visual, width
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'500x500\')
t1=Toplevel(root)
t1.title("Top窗口")
t1.geometry("100x100")
label=Label(t1,text="用户名:")
label.pack()
root.mainloop()
常见可用参数:
activebackground, activeborderwidth,
activeforeground, background, bd, bg, borderwidth, cursor,
disabledforeground, fg, font, foreground, postcommand, relief,
selectcolor, takefocus, tearoff, tearoffcommand, title, type
from tkinter import *
root=Tk()
menuBar=Menu(root,tearoff=0)
root.config(menu=menuBar)
filemenu=Menu(menuBar,fg=\'green\')#文件菜单下的字体是绿色的
filemenu.add_command(label=\'新建\',accelerator = \'Ctrl+N\')
filemenu.add_command(label=\'打开\',accelerator = \'Ctrl+O\')
filemenu.add_command(label=\'保存\',accelerator = \'Ctrl+S\')
filemenu.add_command(label=\'另存为\',accelerator =\'Ctrl+Shift+S\')
menuBar.add_cascade(label=\'文件\',menu=filemenu)
#这里测试root.config(menu=menuBar)的作用
# def show_menuBar():
# root.config(menu=menuBar)
# button=Button(text=\'show_menu\',command=show_menuBar)
# button.pack()
root.mainloop()
from tkinter import *
root=Tk()
menubtn=Menubutton(root,text=\'单击出现下拉菜单\',relief=\'raise\')#建立一个菜单按钮
menubtn.pack()
#添加菜单
filemenu=Menu(menubtn)
filemenu.add_command(label=\'新建\')
menubtn.config(menu=filemenu)#设置菜单按钮允许显示菜单,这里不是root了
root.mainloop()
可用参数: background, bd, bg, borderwidth, closeenough,
confine, cursor, height, highlightbackground, highlightcolor,
highlightthickness, insertbackground, insertborderwidth,
insertofftime, insertontime, insertwidth, offset, relief,
scrollregion, selectbackground, selectborderwidth, selectforeground,
state, takefocus, width, xscrollcommand, xscrollincrement,
yscrollcommand, yscrollincrement
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'500x500\')
mycanvas=Canvas(root,green\')
mycanvas.pack()
#画一个矩形
mycanvas.create_rectangle(10,10,110,110,outline = \'red\',width = 5)
root.mainloop()
Valid resource names: background, bd, bg, borderwidth, cursor,
exportselection, fg, font, foreground, highlightbackground,
highlightcolor, highlightthickness, insertbackground,
insertborderwidth, insertofftime, insertontime, insertwidth,
invalidcommand, invcmd, justify, relief, selectbackground,
selectborderwidth, selectforeground, show, state, takefocus,
textvariable, validate, validatecommand, vcmd, width,
xscrollcommand.
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'300x300+20+10\')
entry=Entry(root)
entry.pack()
root.mainloop()
STANDARD OPTIONS
background, borderwidth, cursor,
exportselection, font, foreground,
highlightbackground, highlightcolor,
highlightthickness, insertbackground,
insertborderwidth, insertofftime,
insertontime, insertwidth, padx, pady,
relief, selectbackground,
selectborderwidth, selectforeground,
setgrid, takefocus,
xscrollcommand, yscrollcommand,
WIDGET-SPECIFIC OPTIONS
autoseparators, height, maxundo,
spacing1, spacing2, spacing3,
state, tabs, undo, width, wrap,
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'300x300+250+55\')
button=Button(text=\'submit\')
button.pack()
t1=Text(root,)
t1.pack()
root.mainloop()
Valid resource names: background, bd, bg, borderwidth, cursor,
exportselection, fg, font, foreground, height, highlightbackground,
highlightcolor, highlightthickness, relief, selectbackground,
selectborderwidth, selectforeground, selectmode, setgrid, takefocus,
width, xscrollcommand, yscrollcommand, listvariable
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'300x300+20+10\')
# listbox=Listbox(root)
listbox=Listbox(root,selectmode=EXTENDED)
listbox.insert(0,"孙悟空")
listbox.insert(1,"唐僧")
listbox.insert(2,"葫芦娃")
listbox.pack()
def func1():
print(listbox.get(0,END))#以元组形式返回所有listbox的元素
def func2():
print(listbox.select_includes(1))#当对应索引被选中时返回True
def func3():
print(listbox.curselection())#以元组形式返回被选中的元素
btn1=Button(text="获取所有元素",command=func1)
btn1.pack()
btn2=Button(text="判断1是否选中",command=func2)
btn2.pack()
btn3=Button(text="获取选中的索引",command=func3)
btn3.pack()
root.mainloop()
可用参数:activebackground, activeforeground, anchor,
background, bd, bg, bitmap, borderwidth, command, cursor,
disabledforeground, fg, font, foreground, height,
highlightbackground, highlightcolor, highlightthickness, image,
indicatoron, justify, offvalue, onvalue, padx, pady, relief,
selectcolor, selectimage, state, takefocus, text, textvariable,
underline, variable, width, wraplength
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'200x200\')
def submit():
print(\'男:\',v1.get(),\'女:\',v2.get(),\'另外:\',v3.get())#选择则值为1,不选中为0
# pass
v1 = IntVar() #用tkinter变量来表示按钮是否选中
v2 = IntVar()
v3 = IntVar()
# 使用 Checkbutton时,必须创建一个 Tkinter 变量用于存放按钮的状态:
cbtn=Checkbutton(root,text=\'男\',variable=v1,command=submit)
cbtn2=Checkbutton(root,text=\'女\',variable=v2,command=submit)
#v3是为了测试variable相同时,点一个,所有的v3都被选中
cbtn3=Checkbutton(root,text=\'不明\',variable=v3,command=submit)
cbtn4=Checkbutton(root,text=\'保密\',variable=v3,command=submit)
button=Button(text=\'submit\',command=submit)
button.pack()
cbtn.pack()
cbtn2.pack()
cbtn3.pack()
cbtn4.pack()
root.mainloop()
Valid resource names: activebackground, activeforeground, anchor,
background, bd, bg, bitmap, borderwidth, command, cursor,
disabledforeground, fg, font, foreground, height,
highlightbackground, highlightcolor, highlightthickness, image,
indicatoron, justify, padx, pady, relief, selectcolor, selectimage,
state, takefocus, text, textvariable, underline, value, variable,
width, wraplength
from tkinter import *
root=Tk()
v=StringVar()
l=[\'man\',\'woman\',\'unknow\']
def ptr():
print(v.get())
for i in l:
rbtn=Radiobutton(root,text=i,variable=v,value=i,command=ptr)
rbtn.pack()
root.mainloop()
Valid resource names:
activebackground, background, bigincrement, bd,
bg, borderwidth, command, cursor, digits, fg, font, foreground, from,
highlightbackground, highlightcolor, highlightthickness, label,
length, orient, relief, repeatdelay, repeatinterval, resolution,
showvalue, sliderlength, sliderrelief, state, takefocus,
tickinterval, to, troughcolor, variable, width
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'300x300+20+10\')
scale=Scale(root,from_=0, to=100)#默认是竖的
scale2=Scale(root,from_=0, to=100,orient=HORIZONTAL)#横的
scale.pack()
scale2.pack()
root.mainloop()
Valid resource names:
activebackground, activerelief,
background, bd, bg, borderwidth, command, cursor,
elementborderwidth, highlightbackground,
highlightcolor, highlightthickness, jump, orient,
relief, repeatdelay, repeatinterval, takefocus,
troughcolor, width.
from tkinter import *
root=Tk()
root.title(\'我的窗口\')
root.geometry(\'300x300+250+55\')
button=Button(text=\'submit\')
button.pack()
t1=Text(root,)
slb=Scrollbar(root)
slb.pack(side=RIGHT,fill=Y)#设置滚动条的显示形式
t1.config(yscrollcommand=slb.set)#设置允许滚动条
#由于没有绑定事件,所以直接拖拽滚动条无效
t1.pack()
root.mainloop()
想要了解更多,可以参考tkinter的官方文档:http://effbot.org/tkinterbook/