Python:GUI之tkinter学习笔记1控件的介绍及使用

相关内容:

  • Tkinter的的使用
    • 1.模块的导入
    • 2.使用
    • 3.控件介绍
      • TK
      • 按键
      • 标签
      • 顶层
      • 菜单
      • 菜单按钮
      • 帆布
      • 条目
      • 信息
      • 文本
      • 列表框
      • Checkbutton
      • 单选按钮
      • 规模
      • 滚动条

 

首发时间:2018-03-04 16:39

 


Python中的GUI各有各特点。

由于只是轻微涉及GUI开发,所以就以轻量级的Tkinter的来学习。

 

 


Tkinter的的使用:

 

  • 1.模块的导入

    • [tkinter是python默认的gui库,所以一般不需要另外安装模块]:来自tkinter import *
  • 2.使用:

    • 创建主窗口:root = Tk()【root是一个主窗口对象】
    • 创建若干个控件:控件对象=控件(root,控件参数设置)【这里的控件也可以添加到其他窗口中】
    • 将控件显示出来:控件对象.pack()【这里也不一定是pack,也可以是其他的显示方式,比如grid,后面介绍】
    • 让主窗口持续显示:root.mainloop()

 

  • 3.控件介绍:

 

  • 主窗口Tk的[所有控件都需要附着在界面上]:

    • 介绍:主窗口是所有控件附着的基础,所有控件都需要附着在界面上,如果程序中没有指定控件附着的窗口,将默认附着到主窗口Tk的中,如果程序中没有定义TK,那么将自动创建一个
    • 常见属性【想要初始化主窗口的属性需要使用主窗口对象。属性(“参数”):
      • 标题:窗口标题
      • geometry:窗口大小,大写格式是”宽度x高度+x位置+y位置”【注意不是*是x】,其中x,y将左上角作为(0,0)
from tkinter import *

root=Tk()
root.title('我的窗口')
root.geometry('500x500')
root.mainloop()

 

 

 

  • 按钮按钮:

    • 介绍:按钮图片
    • 常用参数设置【可以在创建按钮的时候指定,也可以创建后使用按钮对象.config()来设置】:
      • 文本:按钮上的文本显示
      • anchor:按钮上内容的位置[取值:n,ne,e,se,s,sw,w,nw或center,其中nesw是东南西北的缩写]
      • cursor:当鼠标移动到按钮上时所显示的光标【箭头:箭头,交叉:十字,点:点,手1:手.......】
      • font:字体,使用元组来指定一个字体,这个元组包含了一个字体类型名字,一个以磅为单位的高度,代表一个或多个样式的字符串,比如(“Times”,10,“bold “)
      • 背景[可缩写为BG]:背景色,取值可未英文颜色字符串,或者RGB值
      • 前景[可缩写为FG]:前景色,取值可未英文颜色字符串,或者RGB值
      • 边框宽度[可缩写为BD] ::边框大小
      • activebackground:按钮处于活动状态时使用的背景颜色
      • activeforeground:按钮处于活动状态时使用的前景颜色。
      • disabledforeground:禁用按钮时使用的颜色。
      • highlightbackground:当按钮没有焦点时用于高亮边框的颜色
      • 救援:边框的装饰
        • 列表里面是救济的可选值:[“flat”,“raised”,“sunken”,“solid”,“ridge”,“groove”]
        • 平是指按钮边框是平坦的,抬高是指按钮边框是凸起的,凹陷是指按钮边框是凹入的,实是指按钮边框是粗边框...
        • 按钮浮雕的效果:图片
      • padx和pady:指定文本或图象与按钮边框的间距,X,Y为X轴,Y轴方向
      • 高度,widht:按钮的尺寸,高度为高度,宽度为宽度,如果不设置则默认为包括文本内容
      • state:按钮的状态,可取值:NORMAL,ACTIVE或DISABLED。默认值为NORMAL。
      • 理由:对齐方式
      • 命令:当按下按钮时调用的方法

 

按钮所有的可设置参数

activebackground, activeforeground, anchor,
background, bitmap, borderwidth, cursor,
disabledforeground, font, foreground
highlightbackground, highlightcolor,
highlightthickness, image, justify,
padx, pady, relief, repeatdelay,
repeatinterval, takefocus, text,
textvariable, underline, wraplength
 
WIDGET-SPECIFIC OPTIONS【特有选项】:

命令,复合,默认,高度,
过度,状态,宽度

 

 

 

复制代码

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',height=10,width=10,command=hello,relief='sunken')
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()

复制代码

Python:GUI之tkinter学习笔记1控件的介绍及使用_第1张图片

 

 

  • 框架框架:

    • 介绍:一个容器窗口部件可以有边框和背景.Frame默认是没有大小的,所以必须要设置高度和宽度,而当加了控件到帧后它会“缩水”【这里缩水是因为相框自动缩小到刚好能包裹控件,需要在显示的时候强制设置大小比如pack(fill = X),这是强制填充水平方向,又或者使用Frame对象.pack_propagate(0),这个函数可以使得设置的高度和宽度生效
    • 参数设置:可用参数参考下面的可用参数,再参考按钮的参数设置
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()

复制代码

 

 

  • 顶层:

    • 介绍:一个容器窗口,作为一个单独的,最上面的窗口显示。 Python:GUI之tkinter学习笔记1控件的介绍及使用_第2张图片
    • 参数设置:可用参数参考下面的,用法参考Tk的的
    • 顶层是一个子窗口,当父窗口关闭时子窗口会关闭,但子窗口关闭时父窗口不关闭
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()

复制代码

 

 

 

  • 菜单菜单:

    • 介绍:菜单控件,相当于一个菜单组\菜单栏,没有添加其他菜单时默认没有显示,只有添加其他的菜单,才会了实际的意义
    • 要想显示菜单,必须在“要添加菜单的窗口对象”的配置中允许添加上“菜单对象”图片
    • 参数设置:可用参数参考下面的可用参数,再参考按钮的参数设置
      • 注意:菜单是没有文字的
    • 添加菜单按钮:
      • 添加命令菜单:菜单对象.add_command()
      • 添加多级菜单:菜单对象.add_cascade(** options)【多级菜单可以传入一个菜单对象】Python:GUI之tkinter学习笔记1控件的介绍及使用_第3张图片
      • 添加分割线:菜单对象.add_separator(**选项)
      • 添加复选框菜单:菜单对象.add_checkbutton(**选项)
      • 添加单选框菜单:菜单对象.add_radiobutton(**选项)
      • 插入菜单:insert_separator(),insert_checkbutton(),insert_radiobutton(),insert_cascade(),
      • 其他....
常见可用参数:
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()

复制代码

 

 

  • 帆布:

    • 介绍:组织图形这个部件可以用来绘制图表和图,创建图形编辑器,实现定制窗口部件。
    • 参数设置:可用参数参考下面的,用法同样可以参考按钮按钮的
    • 添加图像的方法:
      • create_rectangle:根据四个参数画一个矩形,四个参数是位置
      • create_polygon:根据提供的多个参数画一个多边形
      • 其他..
可用参数: 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,width=200,height=200,bg='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()

复制代码

 

  • 文本:

    • 介绍:多行文本输入域,允许你用不同的样式和属性来显示和编辑文本同时支持内嵌图象和窗口。Python:GUI之tkinter学习笔记1控件的介绍及使用_第4张图片
    • 参数设置:可用参数参考下面的,用法同样可以参考按钮按钮的
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,height=100,width=100,cursor='cross')
t1.pack()

root.mainloop()

复制代码

 

  • 信息:

  • 介绍:显示多行文本类似标签窗口部件,但是能够自动地调整文本到给定的宽度或比率。 Python:GUI之tkinter学习笔记1控件的介绍及使用_第5张图片
  • 参数设置:与标签类似
  • 由于标签也可以显示多行文本后,就逐渐少用Message了。“”“消息窗口小部件显示多行文字。已经过时,因为Label也是这样。”“”

 

 

 

 

  • 列表框:

    • 介绍:列表框用于从一组文本项目中进行选择。根据列表框的配置方式,用户可以从列表中选择一个或多个项目。Python:GUI之tkinter学习笔记1控件的介绍及使用_第6张图片
    • 参数设置:可用参数参考下面的,参数设置同样可以参考按钮按钮的
      • selectmode:选择模式,selectmode = EXTENDED时允许多选
      • selectbackground:选中时的背景颜色
      • selectforeground:选中时的字体颜色
      • selectborderwidth:选中时的边框大小
    • 常用函数:
      • 插入:插入(索引,元素)
      • 删除:删除(索引,元素)
      • 获取列表框元素:ge t()
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()

复制代码

 

  •  复选框Checkbutton:

    • 介绍:复选框点击这个按钮将会在这两个值间切换。
    • 参数设置:可用参数参考下面的,用法同样可以参考按钮按钮的
      • 变量:值为tkinter变量,可以使用tkinter变量.get方法来获取是否选中
    • 如果想要获取选中值,必须设置一个tkinter变量来获取,tkinter变量类型有:BooleanVar,DoubleVar,IntVar,StringVar
可用参数: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()

复制代码

 

 

  • 单选按钮:

    • 介绍:代表一个变量,它可以有多个值中的一个点击它将为这个变量设置值,并且清除与这同一变量相关的其它单选按钮。
    • 参数设置:可用参数参考下面的,用法同样可以参考按钮按钮的
      • 变量:值为tkinter变量,可以使用tkinter变量.get方法来获取是否选中
      • value:根据前面的变量来决定数据类型,使用tkinter变量.get方法此时获取的是选中选项的值的值
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()

复制代码

 
  •  规模:

  • 介绍:允许你通过滑块来设置一数字值。
  • 介绍:允许你通过滑块来设置一数字值。 图片
  • 常用参数设置:
    • from_:设置滑块起始值
    • 于:设置滑块最大值
    • 定向:设置方向,默认是竖的,如果想改成水平的:东方= HORIZONTAL
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()

复制代码

 

 

  • 滚动条:

    • 介绍:为配合使用帆布,项,列表框和文本窗口部件的标准滚动条。
    • 参数设置:可用参数参考下面的,用法参考按钮按钮的
 
 

复制代码

 

复制代码

 

 

 

 

想要了解更多,可以参考tkinter的官方文档:http//effbot.org/tkinterbook/


原文地址:http://www.cnblogs.com/progor/p/8505097.html

 

你可能感兴趣的:(python,Python基础)