python的GUI初步学习(二)

python的GUI初步学习(二)

在上篇文章中,简单学习了用Tk()实例化一个窗口,并对窗口进行了大小,位置,标题,menu菜单等设置,接着我们详细的学习一下。

常用控件

仅有窗口并不能实现交互,还需要控件,Tkinter 提供了各种控件,如按钮、标签和文本
框。在一个 GUI 应用程序中使用,这些控件通常被称为控件或者部件,目前有15种
Tkinter 部件,如下列表:
tkinter控件

几何管理

Tkinter 控件有特定的几何状态管理方法,管理整个控件区域组织,以下是 Tkinter 公开
的几何管理类:包、网格、位置。
几何管理

Lable控件

标签控件,基本用法为: Lable(root, option…) ,即:Label(根对象, [属性列表]),
其中属性列表如下:
Label
在上一节中简单的使用了Label标签控件的text属性,那么接下来,熟悉回忆下标签显示文本

from tkinter import *
win =Tk()
win.title('窗口')
win.geometry('600x500')
Label(win,text='这是text1',bg='blue',fg='red',font=("黑体",20),\
      width=20,height=5).pack()
Label(win,text='这是text2',bg='red',fg='blue',\
      width=20,height=5).pack()

mainloop()

接着标签显示图标

from tkinter import *
win =Tk()
win.title('窗口图标')
win.geometry('500x300')
logo =PhotoImage(file=r'C:\Users\123\Desktop\王者荣耀.png')
Label(win,image=logo).pack()
mainloop()

展示结果在这里插入图片描述
标签图文混叠,边距控制,代码如下:

from tkinter import *
win =Tk()
win.title('图文并存')
win.geometry('500x300')
logo =PhotoImage(file=r'C:\Users\123\Desktop\王者荣耀.png')
text ='''Ding-dong water singing symphony, \n
the fish in the water while willow in spring under\n
 the sway of girl, display self wantonly colorful figure.\n
  Helena o I sit at the computer desk, recalling the past. '''
Label(win,compound=CENTER,text=text,image=logo).pack()
mainloop()

Button控件

Button 控件是一个标准的 Tkinter 部件,用于实现各种按钮。按钮可以包含文本或图
像,还可以关联 Python 函数。
Tkinter 的按钮被按下时,会自动调用该函数。
按钮文本可跨越一个以上的行。此外,文本字符可以有下划线,例如标记的键盘快捷
键。默认情况下,使用 Tab 键可以移动到一个按钮部件,用法如下:
Entry(根对象, [属性列表]),即Entry(root, option…)

常用的属性列表如下:

在这里插入图片描述
relief是按钮边框的样式,有突出,凹陷,平的等等
创建按钮,代码如下:

from tkinter import *
win =Tk()
win.title('Button')
win.geometry('500x300')
#创建二个button
btn1= Button(win,text='按钮一',bg='red',relief='raised',width=8,height=2)
btn1.grid(row=0, column=0, sticky=W, padx=5, pady=5)
btn2= Button(win,text='按钮二',bg='blue',width=8,height=2)
btn2.grid(row=0, column=1, sticky=W, padx=5, pady=5)
mainloop()

创建按钮并绑定响应函数,输入半径,计算圆面积并输出,代码如下:

from math import *
from tkinter import *
def Calculation():
    #清除文本框2
    entry2.delete(0,END)
    #计算
    r =eval(entry1.get())
    S =pi*r*r
    entry2.insert(4,S)
    #清除文本框1
    entry1.delete(0,END)
win =Tk()
win.title('Learing python GUI')
win.geometry('500x300')
#按钮
Label(win,text='输入').grid(row=0)
Label(win,text='输出').grid(row=1)
#文本框
entry1 =Entry(win)
entry1.grid(row=0,column=1)
entry2 =Entry(win)
entry2.grid(row=1,column=1)
#按钮
Button(text='计算',command=Calculation).grid(row=2,column=0,sticky=W, padx=5, pady=5)
Button(text='退出',command=quit).grid(row=2,column=1,sticky=W, padx=5, pady=5)

mainloop()

Checkbutton控件

Checkbutton 是复选框,又称为多选按钮,可以表示两种状态。用法为: Checkbutton
( root, option, … ), 其中可选属性 多,如下表所示:option 有很
以下是这个小工具的常用方法:
在这里插入图片描述
创建一组复选框,代码如下:

from tkinter import*
win =Tk()
win.title('复选框')
win.geometry('500x300')
# 用来获取复选框是否被勾选,通过chVarDis.get()来获取其的状态,其状态值为int类型 勾选为1
chVarDis =IntVar()
# text为该复选框后面显示的名称, variable将该复选框的状态赋值给一个变量,当state='disable'时表明不能修改
check1 =Checkbutton(win,text='唱歌',variable=chVarDis,state='disable')
# 该复选框是否勾选,select为勾选, deselect为不勾选
check1.select()
# 设定该值可以保证本行保持左对齐,N:北/上对齐 S:南/下对齐 W:西/左对齐 E:东/右对齐
check1.grid(column=0, row=0, sticky=W)

chVarUp =IntVar()
check2 =Checkbutton(win,text='跳舞',variable=chVarUp)
check2.deselect()
check2.grid(column=1, row=0, sticky=E)

chVarEn =IntVar()
check3 =Checkbutton(win,text='跳舞',variable=chVarEn)
check3.select()
check3.grid(column=2, row=0, sticky=E)
win.mainloop()

在这里插入图片描述
绑定响应函数,代码如下:

from tkinter import *
def chang():
    v.set('选中之后的字符串')

win =Tk()
win.title('复选框绑定函数')
v =StringVar()
v.set('一开始的字符串')
check =Checkbutton(win,textvariable=v,command=chang).pack()
win.mainloop()

Radiobutton控件

单选按钮是一种可在多个预先定义的选项中选择出一项的 Tkinter 控件 。单选按钮可显
示文字或图片,显示文字时只能使用预设字体,该控件可以绑定一个 Python 函数或方
法,当单选按钮被选择时,该函数或方法将被调用。
单选按钮(Radio Button)这个名字来源于收音机(Radio)上的调频按钮, 这些按钮用
来选择特定波段或预设电台,如果一个按钮被按下, 其他同类的按钮就会弹起,即同时
只有一个按钮可被按下。
一组单选按钮控件和同一个变量关联。点击其中一个单选按钮将把这个变量设为某个预
定义的值。一般用法为: Radiobutton(myWindow,options) ,其中 option 与
Checkbutton,Button 大多重合,用法一致。

在这里插入图片描述
创建单选按钮并绑定响应函数,代码如下:

from tkinter import *
def Select():
    for i in range(4):
        if(v.get()==i):
            root =Tk()
            Label(root,text='你的选择是'+language[i][0]+'!',fg='red',width=20,\
                  height=3).pack()
            Button(root,text='确定',width=5,height=1,command=root.destroy)\
                .pack(side='bottom')


win =Tk()
win.title('单选框')
v=IntVar()
language =[('Python',0),('C',1),('C++',2),('Java',3)]
Label(win,text='选择你所喜欢的一门编程语言:').pack(anchor=W)
for lang,num in language:
    Radiobutton(win,text=lang,value=num,variable=v,command=Select).pack(anchor=W)

win.mainloop()

Menu控件

上一节已经写过,所以只列出熟悉能和方法
Menu被用来创建一个菜单,创建Menu类的实例,然后使用add方法添加命令或者其他
菜单内容。使用方法如下:
Menu(root,option,…)
其中 option 列表如下:
在这里插入图片描述
特有的函数:
在这里插入图片描述

Message控件

Message 控件用来展示一些文字短消息。Message 和 Label 控件有些类似, 但在展示文
字方面比 Label 要灵活,比如 Message 控件可以改变字体,而 Label 控件只能使用一种
字体,它提供了一个换行对象,以使文字可以断为多行。
它可以支持文字的自动换行及对齐,这里要澄清一下前面提到的 Message 控件可以改变
字体的说法: 这是说我们可以为单个控件设置任意字体, 控件内的文字都将显示为该字
体,但我们不能给单个控件内的文字设置多种字体,如果你需要这么做,可以考虑使用
Text 控件。
创建一个 Message 控件的语法如下:
w = Message ( root, option, … )
其中 option 列表如下:
在这里插入图片描述
代码如下:

from tkinter import *
win =Tk()
win.title('Message')
text ="""They say that when you die your life flashes\n \
       before your eyes. Will you see any-thing other \n \
      than a small black box in the corner of your room?\n \
      What have you changed in th world? What will you leave behind?"""
message =Message(win,text=text)
message.config(bg ='yellow',fg ='blue',font=('times',20,'italic'))
message.pack(side=TOP)
win.mainloop()
原创文章 31 获赞 3 访问量 2018

猜你喜欢

转载自blog.csdn.net/qq_43779011/article/details/90738032