Python学习笔记——图形用户界面(2)

Checkbutton控件

Checkbutton控件用来创建复选框。下列是Checkbutton控件的属性。
(1)onvalue,offvalue:设置Checkbutton控件的variable属性所指定的变量 所要存储的数值。如果复选框没有被勾选,此变量的值为offvalue。否则此变量的值为onvalue。
(2)indicatoron:将此属性设置为0,可以将整个控件变成复选框。
下列是Checkbutton控件的方法。
(1)select():选择复选框,并且设置变量的值为onvalue。

import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton

#创建主窗口
win=tkinter.Tk()

check1=Checkbutton(win,text="吴")
check2=Checkbutton(win,text="宇")
check3=Checkbutton(win,text="翔")
check1.select()
check1.pack(side=tkinter.LEFT)
check2.pack(side=tkinter.LEFT)
check3.pack(side=tkinter.LEFT)

#开始窗口的事件循环
win.mainloop()

在这里插入图片描述

Entry控件与Label控件

  • Entry控件用来在窗体或者从窗口内创建一个单行的文本框。
    下列是Entry控件的属性。
    textvariable:此属性为用户输入的文字或者要显示在Entry控件内的文字。
    下列是Entry控件的方法。
    get():此方法可以读取Entry widget内的文字。
  • Lable控件用来创建一个显示方块,可以在这个显示方块里面放置文字或者图片。当用户在Entry控件内输入数值时,其值会存储在tkinter的StringVar类内。可以将Entry控件的textvariable属性设置成StringVar类的实例变量,让用户输入的数值自动显示在Entry控件上。
expression==StringVar()
entry=Entry(frame,textvariable=expression)
entry.pack()
  • 此方法也适用于在Lable控件上。可以使用StringVar类的set()方法,直接写入Label控件要显示的文字。例如:
expression=StringVar()
Label(frame,textvariable=expression)
expression.set("hello")
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry

#创建主窗口
win=tkinter.Tk()

#创建窗体
frame=Frame(win)

#创建一个计算公式
def calc():
    #将用户输入的表达式,计算结果后转换成字符串
    result="="+str(eval(expression.get()))
    #将计算的结果显示在Lable widght上
    label.config(text=result)

#清除文本框与文字标签的内容
def clear():
    expression.set("")
    label.config(text="")

#创建一个Lable控件
label=Label(frame)
#读取用户输入的表达式
expression=StringVar()
#创建一个Entry控件Entry控件位于窗体上方
entry=Entry(frame,textvariable=expression)
entry.pack()

#创建一个Button控件,当用户输入完毕后,单击此按钮即计算表达式的结果
button1=Button(frame,text="等于",command=calc)
button2=Button(frame,text="清除",command=clear)

#设置Entry控件为焦点所在
entry.focus()
frame.pack()
#Lable控件位于窗体的左方
label.pack(side=tkinter.LEFT)
#Button控件位于窗体的右方
button1.pack(side=tkinter.RIGHT)
button2.pack(side=tkinter.RIGHT)

#开始窗口的事件循环
frame.mainloop()

在这里插入图片描述

Listbox控件

  • Listbox控件用来创建一个列表框。列表框内可以包含很多选项,用户可以只选择一项或者选择多项。
    *下列是Listbox的属性。
    (1)height:列表框的行数目。如果此属性为0,则自动设置成能找到的最大选项数目。
    (2)selectmode:设置列表框的种类,可以是SINGLE,EXTENDED,MULTIPLE或者BROWSE。
    (3)width:设置每一行的字符数目。如果此属性为0,则自动设置成能找到的最大字符数目。
    *下列是Listbox控件的使用方法。
    (1)delete(row[,lastrow]):删除指定行row,或者删除row到lastrow之间的行。
    (2)get(row):取得指定行row内的字符串。
    (3)insert(row,string):在指定行row插入字符串string。
    (4)see(row):将指定行row变为可视。
    (5)select_clear():清除选择项。
    (6)select_set(startrow,endrow):选择startrow与endrow之间的行。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry
from tkinter import Listbox

#创建主窗口
win=tkinter.Tk()

#创建窗体
frame=Frame(win)

#创建列表框选项列表
name=["香蕉","苹果","橘子","西瓜","桃子","菠萝","柚子","橙子"]

#创建Listbox控件
listbox=Listbox(frame)
#清除Listbox控件的内容
listbox.delete(0,tkinter.END)
#在Listbbox控件内插入选项
for i in range(8):
    listbox.insert(tkinter.END,name[i])

listbox.pack()
frame.pack()

#开始窗口的事件循环
frame.mainloop()
 

在这里插入图片描述

Menu控件

Menu控件用来创建三种类型的菜单:pop-up(快捷式菜单),toplevel(主目录),pull-down(下拉式菜单)。下列是Menu控件的使用方法。
(1)add_command(options):新建一个菜单项。
(2)add_radiobutton(options):新建一个选择钮菜单项。
(3)add_checkbutton(options):创建一个复选框菜单项
(4)add_cascade(options):将一个指定的菜单与其父菜单联结,创建一个新的级联菜单。
(5)add_separator():新建一个分隔符
(6)add(type,options):新增一个特殊类型的菜单项。
(7)delete(startindex[,endindex]):删除startindex到endindex之间的菜单项
(8)entryconfig(index,options):修改index的菜单项
(9)index(item):返回index索引值的菜单项标签
下列是Menu控件方法的选项。
(1)accelerator:设置菜单项的快捷键,快捷键会显示在菜单项的右边。注意此选项并不会自动将快捷键与菜单项联结在一起,必须另行设置。
(2)command:当选择菜单项时执行的callback函数。
(3)indicatorOn:设置此属性,可以让菜单项选择on或者off。
(4)label:定义菜单项内的文字。
(5)menu:此属性与add_cascade()方法一起使用,用来新增菜单项的子菜单项。
(6)selectColor:菜单项on或者off的颜色。
(7)state:定义菜单项的状态,可以是normal,active,或者disabled。
(8)onvalue,offvalue:存储在variable属性内的数值。当选择菜单项时,将onvalue内的数值复制到variable属性内。
(9)tearOff:如果此选项为true,在菜单项的上面显示一个可按的分隔线。按下此分隔线,会将此菜单项分割出来成为一个新的窗口。
(10)underline:设置菜单项中的哪一个字符要有底线。
(11)value:选择钮菜单项的值。
(12)variable:用来存储数值的变量。

import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry
from tkinter import Listbox
from tkinter import Menu

#创建主窗口
win=tkinter.Tk()

#执行菜单命令,显示一个对话框
def doSomething():
    tkinter.messagebox.askokcancel("菜单","你正在选择菜单命令")

#创建一个主目录(toplevel)
mainmenu=Menu(win)
#新增菜单项
mainmenu.add_command(label="文件",command=doSomething)
mainmenu.add_command(label="编辑",command=doSomething)
mainmenu.add_command(label="视图",command=doSomething)
mainmenu.add_command(label="窗口",command=doSomething)
mainmenu.add_command(label="帮助",command=doSomething)

#设置主窗口的菜单
win.config(menu=mainmenu)

#开始窗口的事件循环
win.mainloop()
 

在这里插入图片描述

import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry
from tkinter import Listbox
from tkinter import Menu

#创建主窗口
win=tkinter.Tk()

#执行【文件/新建】命令,显示一个对话框
def doFileNewCommand(*arg):
    tkinter.messagebox.askokcancel("菜单","你正在选择【新建】命令")

#执行【文件/打开】命令,显示一个对话框
def doFileOpenCommand(*arg):
    tkinter.messagebox.askokcancel("菜单","你正在选择【打开】命令")

#执行【文件/保存】命令,显示一个对话框
def doFileSaveCommand(*arg):
    tkinter.messagebox.askokcancel("菜单","你正在选择【保存】命令")

#执行【帮助/文档】命令,显示一个对话框
def doHelpContentsCommand(*arg):
    tkinter.messagebox.askokcancel("菜单","你正在选择【文档】命令")

#执行【帮助/关于】命令,显示一个对话框
def doHelpAboutCommand(*arg):
    tkinter.messagebox.askokcancel("菜单","你正在选择【关于】命令")

#创建一个下拉式菜单(pull-down)
mainmenu=Menu(win)

#新增“文件”菜单的子菜单
filemenu=Menu(mainmenu,tearoff=0)
#新增"文件"菜单的菜单项
filemenu.add_command(label="新建",command=doFileNewCommand,accelerator="Ctrl-N")
filemenu.add_command(label="打开",command=doFileNewCommand,accelerator="Ctrl-O")
filemenu.add_command(label="保存",command=doFileNewCommand,accelerator="Ctrl-S")
filemenu.add_separator()
filemenu.add_command(label="退出",command=win.quit)
#新增"文件"菜单
mainmenu.add_cascade(label="文件",menu=filemenu)

#新增“帮助”菜单的子菜单
helpmenu=Menu(mainmenu,tearoff=0)
#新增“帮助”菜单的菜单项
helpmenu.add_command(label="文档",command=doHelpContentsCommand,accelerator="F1")
helpmenu.add_command(label="文档",command=doHelpAboutCommand,accelerator="Ctrl_A")
#新增“帮助”菜单
mainmenu.add_cascade(label="帮助",menu=helpmenu)

#设置主窗口的菜单
win.config(menu=mainmenu)

win.bind("<Control-n>",doFileNewCommand)
win.bind("<Control-N>",doFileNewCommand)
win.bind("<Control-o>",doFileOpenCommand)
win.bind("<Control-O>",doFileOpenCommand)
win.bind("<Control-s>",doFileSaveCommand)
win.bind("<Control-S>",doFileSaveCommand)
win.bind("<F1>",doHelpContentsCommand)
win.bind("<Control-a>",doHelpAboutCommand)
win.bind("<Control-A>",doHelpAboutCommand)

#开始窗口的事件循环
win.mainloop()
 

在这里插入图片描述

Message控件

Message控件用来显示多行不可编辑的文字。Message控件会自动分行,并且编排文字的位置。Message控件与Label控件的功能相似,但是Messaga控件多了自动编排的功能。

import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry
from tkinter import Listbox
from tkinter import Menu
from tkinter import Message

#创建主窗口
win=tkinter.Tk()

txt="一二三四五,上山打老虎,老虎没打到,打到小松鼠。"
msg=Message(win,text=txt)
msg.pack()

#开始窗口的事件循环
win.mainloop()
 

在这里插入图片描述

Radiobutton控件

Radiobutton控件用来创建一个单选按钮。为了让一群单选按钮可以执行相同的功能,必须设置这群单选按钮的variable为相同值,value属性值则是各单选按钮的数值。
下列是Radiobutton控件的属性。
(1)command:当用户选中此单选按钮时,所调用的函数。
(2)variable:当用户选中此单选按钮时,要更新的变量。
(3)width:当用户选中此单选按钮时,要存储在变量里面的值。
下列是Radiobutton控件的方法。
(1)flash():将前景与背景颜色互换来产生闪烁的效果。
(2)invoke():执行command属性所定义的函数
(3)select():选中此单元按钮,将variable变量的值设置成value属性值。

import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry
from tkinter import Listbox
from tkinter import Menu
from tkinter import Message
from tkinter import IntVar
from tkinter import Radiobutton

#创建主窗口
win=tkinter.Tk()

#运动项目列表
sports=["棒球","篮球","足球","网球","排球"]

#将用户的选择显示在Label控件上
def showSelection():
    choice="你的选择是:"+sports[var.get()]
    label.config(text=choice)

#读取用户的选择值,是一个整数
var=IntVar()

#创建单选按钮,靠右边对齐
Radiobutton(win,text=sports[0],variable=var,value=0,command=showSelection).pack(anchor=tkinter.W)
Radiobutton(win,text=sports[1],variable=var,value=1,command=showSelection).pack(anchor=tkinter.W)
Radiobutton(win,text=sports[2],variable=var,value=2,command=showSelection).pack(anchor=tkinter.W)
Radiobutton(win,text=sports[3],variable=var,value=3,command=showSelection).pack(anchor=tkinter.W)
Radiobutton(win,text=sports[4],variable=var,value=4,command=showSelection).pack(anchor=tkinter.W)

#创建文字标签,用来显示用户的选择
label=Label(win)
label.pack()

#开始窗口的事件循环
win.mainloop()
 

在这里插入图片描述

import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
from tkinter import Checkbutton
from tkinter import StringVar
from tkinter import Entry
from tkinter import Listbox
from tkinter import Menu
from tkinter import Message
from tkinter import IntVar
from tkinter import Radiobutton
from tkinter import *

#创建主窗口
win=tkinter.Tk()

#运动项目列表
sports=["棒球","篮球","足球","网球","排球"]

#将用户的选择显示在Label控件上
def showSelection():
    choice="你的选择是:"+sports[var.get()]
    label.config(text=choice)

#读取用户的选择值,是一个整数
var=IntVar()

#创建单选按钮,靠左边对齐
radio1=Radiobutton(win,text=sports[0],variable=var,value=0,command=showSelection)
radio2=Radiobutton(win,text=sports[1],variable=var,value=1,command=showSelection)
radio3=Radiobutton(win,text=sports[2],variable=var,value=2,command=showSelection)
radio4=Radiobutton(win,text=sports[3],variable=var,value=3,command=showSelection)
radio5=Radiobutton(win,text=sports[4],variable=var,value=4,command=showSelection)

#将单选按钮的外形设置成命令型按钮
radio1.config(indicatoron=0)
radio2.config(indicatoron=0)
radio3.config(indicatoron=0)
radio4.config(indicatoron=0)
radio5.config(indicatoron=0)

radio1.pack(anchor=tkinter.W)
radio2.pack(anchor=tkinter.W)
radio3.pack(anchor=tkinter.W)
radio4.pack(anchor=tkinter.W)
radio5.pack(anchor=tkinter.W)

#创建文字标签,用来显示用户的选择
label=Label(win)
label.pack()

#开始窗口的事件循环
win.mainloop()
 

在这里插入图片描述

Scale控件

Scale用来创建一个标尺式的滑动条对象,让你可以移动标尺上的光标来设置数值。下列是Scale控件的使用方法。
(1)get():取得目前标尺上的光标值。
(2)set(value):设置目前标尺上的光标值。

from tkinter import *
from string import *

#创建主窗口
win=Tk()

#将标尺上的0-100范围内的数字,转换成0-255范围内的十六进位数字
#再转化成2个字符的字符串,如果数字只有一位,就在前面加一个零
def getRGBStr(value):
    #将标尺上的0-100范围内的数字转换成0-255范围内的十六进制数字,再转换成字符串
    ret=str(hex(int(value/100*255)))
    #将十六进制数字前面的0x去掉
    ret=ret[2:4]
    #转换成2个字符的字符串,假如数字只有一位就在前面加一个0
    ret=ret.zfill(2)
    return ret

#将RGB颜色的字符串,转换成#rrggbb类型的字符串
def showRGBColor():
    #读取#rrggbb字符串的rr部分
    strR=getRGBStr(var1.get())
    #读取#rrggbb字符串的gg部分
    strG=getRGBStr(var2.get())
    #读取#rrggbb字符串的bb部分
    strB=getRGBStr(var3.get())
    #转换成#rrggbb类型的字符串
    color="#"+strR+strG+strB
    #将颜色字符串,设置给Label控件的背景颜色
    colorBar.config(background=color)

#分别读取三个标尺的值,是一个双精度浮点数
var1=DoubleVar()
var2=DoubleVar()
var3=DoubleVar()

#创建标尺
scale1=Scale(win,variable=var1)
scale2=Scale(win,variable=var2)
scale3=Scale(win,variable=var3)

#将按钮靠左对齐
scale1.pack(side=LEFT)
scale2.pack(side=LEFT)
scale3.pack(side=LEFT)

#创建一个标签,用来显示颜色字符串
colorBar=Label(win,text=" "*40,background="#000000")
colorBar.pack(side=TOP)

#创建一个标签,按下后立即将标尺上的RGB值显示在Label控件上
button=Button(win,text="查看颜色",command=showRGBColor)
button.pack(side=BOTTOM)

#开始程序循环
win.mainloop()

在这里插入图片描述

Scrollbar控件

Scrollbar控件用来创建一个水平或者垂直的滚动条,可与Listbox,Text,Canvas等控件共同使用来移动显示的范围。下列是Scrollbar控件的方法。
(1)set(first,last):设置目前的显示范围,其值在0-1之间。
(2)get():返回目前滚动条设置值。

from tkinter import *
from string import *

#创建主窗口
win=Tk()

#创建一个水平滚动条
scrollbar1=Scrollbar (win,orient=HORIZONTAL )
#水平滚动条位于窗口底端,当窗口改变大小时会横向填满窗口
scrollbar1.pack(side=BOTTOM,fill=X)

#创建一个竖直滚动条
scrollbar2=Scrollbar (win)
#水平滚动条位于窗口右端,当窗口改变大小时会纵向填满窗口
scrollbar2.pack(side=RIGHT,fill=Y)

#创建一个列表框,x方向的滚动条指令是scrollbar1对象的set()方法,y方向的滚动条指令是scrollbar2对象的set()方法
mylist=Listbox(win,xscrollcommand=scrollbar1.set,yscrollcommand=scrollbar2.set)
#在列表框内插入60个选项
for i in range(60):
    mylist.insert(END,"一二三四五,上山打老虎,老虎没打到,打到小松鼠。"+str(i))
#列表位于窗口左端,当窗口改变大小时会在X与Y方向填满窗口
mylist.pack(side=LEFT,fill=BOTH)
#移动水平滚动条时,改变列表框的x方向可见范围
scrollbar1.config(command=mylist.xview)
#移动竖直滚动条时,改变列表框的y方向可见范围
scrollbar2.config(command=mylist.yview)

#开始程序循环
win.mainloop()

在这里插入图片描述

Text控件

Text控件用来创建一个多行,格式化的文本框。用户可以改变文本框内的字体,文字颜色。
下列是Text控件的属性:
(1)state:此属性值可以是normal或者disable。state等于normal表示此文本框可以编辑内容;state等于disabled表示此文本框可以不编辑内容。
(2)tabs:此属性值为一个tab位置的列表。列表中的元素是tab位置的索引值,再加上一个调整字符 :l,r,c。l代表left,r为right,c为center。
下列是Text控件的使用方法:
(1)delete(startindex[,endindex]):删除特定位置的字符,或者这一定范围内的文字。
(2)get(startindex[,endindex]):返回特定位置的字符,或者这一定范围内的文字。
(3)index(index):返回指定索引值的绝对值。
(4)insert(index[,string]…):将字符串插入到指定位置。
(5)see(index):如果指定索引值的文字是可见的就返回True。

from tkinter import *
from string import *

#创建主窗口
win=Tk()
win.title(string="文本控件")

#创建一个Text控件
text=Text(win)

#在Text控件内插入一段文字
text.insert(INSERT,"一二三四五,上山打老虎,老虎没打到,打到小松鼠。:\n\n")

#跳到下一行
text.insert(INSERT,"\n\n")

#在Text控件内插入一个按钮
button=Button(text,text="关闭",command=win.quit)
text.window_create(END,window=button)

text.pack(fill=BOTH)

#在第一行文字的第10个字符到第14个字符处插入标签,标签名为“print”
text.tag_add("print","1.10","1.15")
#将插入的按钮标签名设置为“button”
text.tag_add("button",button)

#改变标签“print”的前景与背景颜色,并且加底线
text.tag_config("print",background="yellow",foreground="blue",underline=1)
#设置标签“button”的居中排列
text.tag_config("button",justify="center")

#开始程序循环
win.mainloop()

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值