目录

GUI图形用户编程(二)

Tkinter中常见用法

常见选项汇总

常见组件

Button

Entry单行文本框

Text多行文本框

Radiobutton单选按钮

canvas画布

布局管理器

grid布局管理器

pack布局管理器

place布局管理器


GUI图形用户编程(二)

Tkinter中常见用法

常见选项汇总

选项名(别名)

含义

activebackground

指定组件处于激活状态时的背景色

activeforeground

指定组件处于激活状态时的前景色

background(bg)

指定组件正常显示时的背景色

borderwidth

指定组件正常显示时的3D边框的宽度,该值可以是Tk—GetPixeis接受的任何格式

cursor

指定光标在组件上的样式,该值可以是Tk—GetCursors接受的任何格式

disabledforeground

指定组件处于禁用状态时的前景色

font

指定组件上显示的文本字体

foreground(fg)

指定组件正常显示时的前景色

highlightcolor

指定组件在高亮状况下的前景色

highlightbackground

指定组件在高亮状态下的beijingse

highlightthickness

指定组件在高亮状态下的周围方形区域的宽度,该值可以是Tk—GetPixeis接受的任何格式

height

指定组件的高度,以font选项指定的字体的字符高度为单位,至少为1

image

指定组件的显示的图片,若设置了image选项,它将会覆盖text、bitmap选项

justify

指定组件内部内容的对齐方式,该选项支持LEFT(左对齐)、CENTER(居中对齐)、RIGHT(右对齐)这三个值

padx

指定组件内部在水平方向上两边的空白,该值可以是Tk—GetPixeis接受的任何格式

pady

指定组件内部在垂直方向上两边的空白,该值可以是Tk—GetPixeis接受的任何格式

relief

指定组件的3D效果,该值指出组件内部相对于外部的外观样式

selectbackground

指定组件在选中状态下的背景色

selectborderwidth

指定组件在选中状态下的3D边框的宽度,该值可以是Tk—GetPixeis接受的任何格式

state

指定组件的当前状态,该选项支持NORMAL(正常)、DISABLE(禁用)这两个值

takefocus

指定组件在键盘遍历(Tab或Shift +Tab)时是否接受焦点,将该选项设为1为接受焦点,设为0则为不接收焦点

text

指定组件上显示的文本,文本显示格式由组件本身、anchor及justify选项决定

textvariable

指定一个变量名,GUI组件负责显示该变量值转换得到的字符串,文本显示格式由组件本身、anchor及justify选项决定

underline

指定为组件文本的第几个字符添加下划线,该选项就相对于为组件绑定了下划线

width

指定组件的宽度,以font选项指定的字体的字符高度为单位,至少为1

wraplength

对于能支持字符换行的组件,该选项指定每行显示的最大字符数,超过该数量的字符将会转到下行显示

xscrollcommand

通常用于将组件的水平滚动改变(包括内容滚动或宽度发生改变)与水平滚动条的set方法关联,从而让组件的水平滚动改变传递到水平滚动条

yscrollcommand

通常用于将组件的垂直滚动改变(包括内容滚动或宽度发生改变)与水平滚动条的set方法关联,从而让组件的垂直滚动改变传递到水平滚动条

常见组件

Button

Button(按钮)用来执行用户的单击操作。Button可以包含文本,也可以包含图像。按钮被单击后会自动调用对应事件绑定的方法。

Entry单行文本框

Entry用来接收一行字符串的控件。如果用户输入的文字长度长于Entry控件的宽度时,文字会自动向后滚动,如果想输入多行文本,需要使用Text控件

Text多行文本框

Text(多行文本框)主要用于显示多行文本,还可以显示网络链接、图片、HTML页面、甚至css样式表、添加组件等。也常被用来做简单的文本处理器、文本编辑器或者网页浏览器来使用。比如IDLE就是Text组件构成的。

Radiobutton单选按钮

Radiobutton控件用于选择同一个单选按钮中的一个。

Radiobutton可以显示文本,也可以显示图像。

canvas画布

canvas(画布)是一个矩形区域,可以放置图形、图像、组件等。

例题:

from tkinter import *
from tkinter import messagebox


class Application(Frame):
    """一个经典的GUI程序类的写法"""

    def __init__(self, master=None):
        super().__init__(master)         # super()代表的是父类的定义,而不是父类对象
        self.master = master
        self.pack()
        self.createWidget()

    def createWidget(self):
        """创建组件"""
        self.bnt = Button(self, text="登录", command=self.login)
        self.bnt.pack()

    def login(self):
        messagebox.showinfo("Python基础学习", "登录成功!!!开启学习之旅!!!")


if __name__ == "__main__":
    root = Tk()
    root.geometry("600x700+200+300")
    app = Application(master=root)
    root.mainloop()

布局管理器

Tkinter提供了三种管理器:pack、grid、place。

grid布局管理器

grid表格管理器,采用表格结构组织组件,子组件的位置由行和列的单元格来确定,并且可以跨行和跨列,从而实现复杂的布局。

grid()方法提供选项:

选项

说明

取值范围

column

单元格的列号

从0开始的正整数

columnspan

跨列或跨越的列数

正整数

row

单元格的行号

从0开始的正整数

rowspan

跨行或跨越的行数

正整数

ipadx,ipady

设置子组件之间的间隔。x方向或y方向,默认单位为像素

非负浮点数,默认0.0

padx、pady

与之并列的组件之间的间隔,x方向或y方向,默认单位为像素

非负浮点数,默认0.0

sticky

组件紧贴所在单元格的某一角,对应于东南西北中依旧4个角

“n”,“s”,“w”,“e”,“nw”,“sw”,“se”,“ne”,“center”

用grid()方法设计计算机界面

from tkinter import *

class Application(Frame):
    """一个经典的GUI程序类的写法"""

    def __init__(self, master=None):
        super().__init__(master)         # super()代表的是父类的定义,而不是父类对象
        self.master = master
        self.pack()
        self.createWidget()

    def createWidget(self):
        """用grid设计计算机界面"""
        Entry(self).grid(row=0,column=0,columnspan=4,pady=10)
        bntText=(("MC", "M+", "M-", "MR"),("C", "±", "÷", "×"),(7, 8, 9, "-"),(4, 5, 6,"+"),(1, 2, 3, "="),(0,"."))
        for rindex,r in enumerate(bntText):
            for cindex,c in enumerate(r):
                if c=="=":
                    Button(self,text=c,width=2).grid(row=rindex+1,column=cindex,rowspan=2,sticky=NSEW)
                elif c==0:
                    Button(self,text=c,width=2).grid(row=rindex+1,column=cindex,columnspan=2,sticky=NSEW)
                elif c==".":
                    Button(self,text=c,width=2).grid(row=rindex+1,column=cindex+1,sticky=EW)
                else:
                    Button(self,text=c,width=2).grid(row=rindex+1,column=cindex,sticky=EW)

                    
if __name__ == "__main__":
    root = Tk()
    root.geometry("150x250+200+300")
    app = Application(master=root)
    root.mainloop()

计算机界面效果:

python中entry值怎么得到 entry在python中代表什么_开发语言

pack布局管理器

pack按照组件创建顺序将子组件添加到父组件中去,按照垂直或者水平的方向自然排布。如果不指定任何选项,默认在负组件中自顶而下垂直添加组件。

pack是代码最少,最简单的一种,可用于快速生成界面

pack()方法提供选项:

名称

描述

取值范围

expand

当值为“yes”时,side选项无效,组件显示在父配件中心位置,若fill选项为“both”,ze填充父组件的剩余空间

“yes”,自然数,“no”,0(默认值:“no”或0)

fill

填充x(y)方向上的空间,当side=“top”或“bottom”时,填充x方向;当side=“left”或“right”时,填充“y”方向;当expand选项为“yes”时,填充父组件的剩余空间

“x”,“y”,“both”,“none”(默认值:none)

ipadx,ipady

设置子组件间的间隔,x方向或y方向,默认单位为像素

非负浮点数,默认0.0

padx,pady

与之并列的组件之间的间隔,x方向或y方向,默认单位为像素

非负浮点数,默认0.0

side

定义停靠在夫组建的哪一边上

“top”,“bottom”,“left”,“right”(默认:top)

before

将本组件与所选组件之前pack,类似于先创建本组件在创建选定组件

已经pack后的组件对象

after

将本组件与所选组件之后pack,类似于先创建选定组件在创建本组件

已经pack后的组件对象

in—

将本组件作为所选组件对象的子组件,类似于指定本组件的master为选定组件

已经pack后的组件对象

anchor

对齐方式,左对齐“w”,右对齐“e”,顶对齐“n”,底对齐“s”

“n”,“s”,“w”,“e”,“nw”,“sw”,“se”,“ne”,“center”(默认)

用pack()方法设计简易钢琴软件界面

from tkinter import *

root=Tk()
root.geometry("700x220")

#Frame是一个矩形区域,就是用来放置其他子组件
f1=Frame(root)
f1.pack()
f2=Frame(root)
f2.pack()

btnText=("流行风","中国风","欧美风","重金属","轻音乐")

for txt in btnText:
    Button(f1,text=txt).pack(side="left", padx="10")

for i in range(1,20):
    Label(f2,width=5, height=10, borderwidth=1, relief="solid", bg="black" if i%2==0 else "white").pack(side="left", padx=2)


root.mainloop()

钢琴软件界面效果:

python中entry值怎么得到 entry在python中代表什么_python中entry值怎么得到_02

place布局管理器

place布局管理器可通过坐标精准控制组件的位置,适用于一些布局更加灵活的场景。

place()方法的选项:

选项

说明

取值范围

x,y

组件左上角的绝对坐标(相对于窗口)

非负整数 x和y选项用于设置偏移(像素),如果同时设置relx(rely)和x(y),那么place将优先计算relx和rely,然后在实现x和y指定的偏移量

relx,rely

组件组上角的坐标(相对于父容器)

relx是相对于父组件的位置,0是最左边,0.5是正中间,1是最右边; rely是相对于父组件的位置。0是最上边,0.5是正中间,1是最下边。

width,height

组件的宽度和高度

非负整数

relwidth,relheight

组件的宽度和高(相对于父容器)

与relx,rely取值类似,但是相对于父组件的尺寸

anchor

对齐方式,左对齐“w”,右对齐“e”,顶对齐“n”,底对齐“s”

“n”,“s”,“w”,“e”,“nw”,“sw”,“se”,“ne”,“center”(默认)