失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python tkinter 组件功能实例总结(代码+效果图)(Radiobutton | Button | Entry | Menu | Text)

python tkinter 组件功能实例总结(代码+效果图)(Radiobutton | Button | Entry | Menu | Text)

时间:2020-07-17 12:19:58

相关推荐

python tkinter 组件功能实例总结(代码+效果图)(Radiobutton | Button | Entry | Menu | Text)

tkinter Components Example

Componentstkinter.Radiobutton1 tkinter.Radiobutton 初始化选择及样式(indicatoron)调整2 tkinter.Radiobutton 判断Radiobutton的选择状态3 tkinter.Radiobutton 组件显示图片4 tkinter.Radiobutton List批量创建组件 tkinter.Button1 tkinter.Button command 事件绑定2 tkinter.Button bind 事件绑定的例子 tkinter.Entry1 tkinter.Entry.insert() 赋值2 tkinter.Entry.get() 获取控件输入值3 tkinter.Entry textvariable 绑定变量4 tkinter.Entry state 正常、禁用、只读5 tkinter.Entry 文本框限制输入数字 tkinter.Menu1 创建主菜单栏及子菜单2 创建右键弹出菜单3 创建一个选项菜单 tkinter.Text1 创建Text控件2 Text控件插入内容 insert(index, chars, *args)3 tkinter.Text.delete(index1, index2=None) 删除内容4 tkinter.Text.get(index1, index2=None) 获取内容5 带滚动条的text控件6 tkinter.Text.count() 统计字数

Components

tkinter.Radiobutton

1 tkinter.Radiobutton 初始化选择及样式(indicatoron)调整

from tkinter import *root=Tk()# METHOD 1: 创建变量var,并预先选中value为2的单选按钮var=IntVar() var.set(1)# METHOD 2:#var=IntVar(value=1) ra1=Radiobutton(root,text='王者荣耀',variable=var,value=0,indicatoron=0)ra1.grid(row=0,column=0)ra2=Radiobutton(root,text='和平精英',variable=var,value=1,indicatoron=0)ra2.grid(row=0,column=1)ra3=Radiobutton(root,text='天涯明月刀',variable=var,value=2,indicatoron=0)ra3.grid(row=0,column=2)root.mainloop()

单选按钮,可以改变样式,变得像一个普通按钮的样子,改变样式的参数是:indicatoron只要设置为0,就可以改变

单选选择框,可以改变样式,变得像一个普通按钮的样子,改变样式的参数是:indicatoron只要设置为1,就可以改变

2 tkinter.Radiobutton 判断Radiobutton的选择状态

from tkinter import *root=Tk()def selectjob():if var.get()==0: # 获取变量的值与单选按钮的value来对比print('ra1被选中')elif var.get()==1:print('ra2被选中')else:print('ra3被选中')var=IntVar() # 创建变量var,并预先选中value为2的单选按钮var.set(1)ra1=Radiobutton(root,text='王者荣耀',variable=var,value=0)ra1.grid(row=0,column=0)ra2=Radiobutton(root,text='英雄联盟',variable=var,value=1)ra2.grid(row=0,column=1)ra3=Radiobutton(root,text='绝地求生',variable=var,value=2)ra3.grid(row=0,column=2)# ra2.select() 也可以在这里用select来预先选中某个按钮but1=Button(root,text="判断",command=selectjob)but1.grid(row=0,column=3)root.mainloop()

variable绑定的变量也可以是字符串变量,相应地,value就要取一个字符串,当然这个字符串要唯一,不要取相同的字符串,否则无法区别是哪一个单选按钮。

3 tkinter.Radiobutton 组件显示图片

from tkinter import *root=Tk()var=IntVar() # 创建变量var,并预先选中value为2的单选按钮var.set(1)img1=PhotoImage(file='1.png')img2=PhotoImage(file='2.png')img3=PhotoImage(file='3.png')ra1=Radiobutton(root,text='PIC1',image=img1,variable=var,value=0)ra1.grid(row=0,column=0)ra2=Radiobutton(root,text='PIC2',image=img2,variable=var,value=1)ra2.grid(row=0,column=1)ra3=Radiobutton(root,text='PIC3',image=img3,variable=var,value=2)ra3.grid(row=0,column=2)root.mainloop()

4 tkinter.Radiobutton List批量创建组件

from tkinter import *def selectjob():print(var.get()) # 获取选择的选项root=Tk()var=IntVar() # 创建变量var,并预先选中value为2的单选按钮var.set(1)list1=['足球','排球','篮球','乒乓球','体操','举重','田径','游泳','射击','拳击']for index,item in enumerate(list1):# 用for循环和enumerate函数实现同时输出索引和列表元素内容ra1=Radiobutton(root,text=item,variable=var,value=index+1,command=selectjob)ra1.grid(row=0,column=index,sticky=W)root.mainloop()

tkinter.Button

1 tkinter.Button command 事件绑定

import tkinter as tkroot = tk.Tk()counter = 0def clickCount():global countercounter += 1lab1.config(text=str(counter))lab1 = tk.Label(root,text='null')lab1.pack()btn1 = tk.Button(root,text="确定",command=clickCount)btn1.pack()root.mainloop()

2 tkinter.Button bind 事件绑定的例子

使用command时,虽然比较简单方便,但也存在很大的局限性:

无法为具体的事件(比如鼠标移动、按键事件)绑定事件处理方法;程序无法获得事件相关信息。

from tkinter import *root = Tk()def move(event):lab2["text"] = "鼠标移动到:(%s,%s)" % (event.x,event.y)def click(event):lab2["text"] = "鼠标在(%s,%s)处单击" % (event.x,event.y)lab1 = Label(root,height=5,width=50)lab1.bind("<Motion>",move)lab1.bind("<Button-1>",click)lab2 = Label(root)lab1.pack()lab2.pack()root.mainloop()

所有的组件都有一个Bind()方法,该方法可以为任意的事件绑定事件处理方法

Bind()的绑定语法为:Widget.bind(event,handler)event事件的字符串大致格式为:modifier-type-detailtype是事件字符串的关键部分,用于描述事件的种类,比如鼠标事件、键盘事件等;modifier是事件的修饰部分,比如单击、双击等;detail用于事件的详情,比如指定鼠标左键、右键、滚轮等。 有兴趣的可以去查查 鼠标的相关事件键盘的相关事件组件的相关事件 Bind()的取消绑定为:Widght.unbind("<····>")

tkinter.Entry

Entry(输入框)组件通常用于获取用户的输入文本

如果你希望接收多行文本的输入,可以使用 Text 组件

Tkinter组件详解(七):Entry

1 tkinter.Entry.insert() 赋值

import tkinter as tkroot = tk.Tk()entry0= tk.Entry(root)entry0.pack(padx=20, pady=20)entry0.delete(0, "end")entry0.insert(0, "默认文本...")root.mainloop()

2 tkinter.Entry.get() 获取控件输入值

strValue = ssss .get()

3 tkinter.Entry textvariable 绑定变量

绑定 Entry 组件到 Tkinter 变量(StringVar),并通过该变量设置和获取输入框的文本:

import tkinter as tkroot = tk.Tk()v = tk.StringVar()entry_0 = tk.Entry(root, textvariable=v)entry_0.pack()v.set("Hello, Python!")strValue = v.get()root.mainloop()

4 tkinter.Entry state 正常、禁用、只读

from tkinter import *root = Tk()root.geometry('200x200')lf = LabelFrame(root, text='normal状态')lf.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)entry_0 = Entry(lf, state='normal')entry_0.place(relx=0.1, rely=0.25, relwidth=0.8)root.mainloop()

state取值:normaldisableenablereadonly

5 tkinter.Entry 文本框限制输入数字

from tkinter import *from tkinter import messageboxroot=Tk()def limit():try:float(entry_0.get()) #获取entry_0的值,转为浮点数,如果不能转捕获异常entry_0.delete('0','end')entry_0.insert('1.0',entry_0.get())except:messagebox.showwarning('警告','请输入数字')entry_0 = Entry(root)entry_0.grid(row=0,column=0)button = Button(root,text='Set',command=limit)button.grid(row=0,column=1)mainloop()

除float外,还可以使用floatint等来限制

tkinter.Menu

1 创建主菜单栏及子菜单

import tkinterroot = tkinter.Tk()menu = tkinter.Menu(root)#实例化菜单栏对象submenu = tkinter.Menu(menu, tearoff=1)#实例化菜单对象,tearoff设置为1后,表示菜单是可以独立出来的submenu.add_command(label="打开")submenu.add_command(label="保存")submenu.add_command(label="关闭")menu.add_cascade(label="文件", menu=submenu)#菜单栏对象添加菜单对象submenu = tkinter.Menu(menu, tearoff=0)submenu.add_command(label="复制")submenu.add_command(label="粘贴")submenu.add_separator()#菜单项之间的分割线submenu.add_command(label="剪切")menu.add_cascade(label="编辑", menu=submenu)#添加分层菜单项submenu = tkinter.Menu(menu, tearoff=0)submenu.add_command(label="关于")menu.add_cascade(label="帮助", menu=submenu)root.config(menu=menu)#需要使用主窗口的config()方法将菜单栏对象添加的窗口root.mainloop()

2 创建右键弹出菜单

import tkinter root = tkinter.Tk()menu = tkinter.Menu(root, tearoff=0)menu.add_command(label="Copy")menu.add_command(label="Paste")menu.add_separator()menu.add_command(label="Cut")def popupmenu(event):menu.post(event.x_root, event.y_root)root.bind("<Button-3>", popupmenu)root.mainloop()

3 创建一个选项菜单

from tkinter import * master = Tk() variable = StringVar(master) variable.set("one") # <em>default value</em> w = OptionMenu(master, variable, "one", "two", "three") w.pack() mainloop()

tkinter.Text

Text控件通常用作编辑框,可以接收文字的输入, 还可以用做样式化代码编辑器web浏览器

Text控件支持显示多行文本,文本内容中有换行符\n,就会换行显示。

1 创建Text控件

width表示TEXT的宽度,以字符为单位,具体显示宽度依赖字体大小(font size)

height表示TEXT的高度,以字符为单位,具体显示高度依赖字体大小(font size)

import tkinterroot = tkinter.Tk()root.title('tkinter.Text Example')width = 300 height = 300root.geometry(f'{width}x{height}')text = tkinter.Text(root, width=40, height=10)text.pack()root.mainloop()

2 Text控件插入内容 insert(index, chars, *args)

import tkinterroot = tkinter.Tk()root.title('tkinter.Text Example')width = 300 height = 300root.geometry(f'{width}x{height}')text = tkinter.Text(root, width=40, height=10)text.pack()text.insert('1.0', '这是文本框,你可以输入任何内容')root.mainloop()

text.insert('1.0', '这是文本框,你可以输入任何内容')

index=‘1.0’,表示插入的位置在第1行第0个字符处,也就是行首。由于历史惯例,行号从1开始计数,字符编号从0开始计数。

insert(index, chars, *args)insert是在index处的字符前插入字符

index表示插入文本的位置chars表示文本的内容

使用注意:

from tkinter.constants import END# END实际就是字符串'end'text.insert(END, 'Hello End')

3 tkinter.Text.delete(index1, index2=None) 删除内容

import tkinterroot = tkinter.Tk()root.title('tkinter.Text Example')width = 300 height = 300root.geometry(f'{width}x{height}')text = tkinter.Text(root, width=40, height=10)text.pack()text.insert('1.0', '这是文本框,你可以输入任何内容')text.delete('1.0', '1.6')root.mainloop()

效果就是:字符串这是文本框,被删除掉了

4 tkinter.Text.get(index1, index2=None) 获取内容

import tkinterroot = tkinter.Tk()root.title('tkinter.Text Example')width = 300 height = 300root.geometry(f'{width}x{height}')text = tkinter.Text(root, width=40, height=10)text.pack()text.insert('1.0', '这是文本框,你可以输入任何内容\n')ssss = text.get('1.0', '1.7')text.insert(tkinter.END, ssss)root.mainloop()

5 带滚动条的text控件

import tkinterfrom tkinter.constants import (HORIZONTAL, VERTICAL, RIGHT, LEFT, X, Y, BOTH, BOTTOM, YES, NONE, END, CURRENT)root = tkinter.Tk()root.title('滚动条Text Example')text = tkinter.Text(root,width=50,height=8, wrap=NONE)scroll = tkinter.Scrollbar()# 放到窗口的右侧, 填充Y竖直方向scroll.pack(side=tkinter.RIGHT,fill=tkinter.Y)# 两个控件关联scroll.config(command=text.yview)text.config(yscrollcommand=scroll.set)text.pack()str1 = 'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n' \'Hello , Python \n'text.insert(tkinter.INSERT,str1)root.mainloop()

yscrollcommand使Text控件可以垂直滚动。yscrollcommand=scrollbar_v.set,将Scrollbar与 Text绑定。xscrollcommand使Text控件可以水平滚动。xscrollcommand=scrollbar_h.set,将Scrollbar与 Text绑定。wrapwrap属性,用来控制当一行的内容太多,超出Text的width时,文本的内容怎样显示。简单讲就是控制自动换行。WORD表示单词换行;CHAR(default)表示字符换行;NONE 表示不自动换行。config()上面的例子中,Scrollbar与Text的绑定是在Text对象创建时,"静态"绑定的。能否"动态"绑定呢?答案是肯定的。就是使用config函数。通过查看源码发现,Text类中并没有config函数,其实config函数是从Misc继承过来的。

6 tkinter.Text.count() 统计字数

import tkinterroot = tkinter.Tk()root.title('tkinter.Text Example')width = 300 height = 300root.geometry(f'{width}x{height}')text = tkinter.Text(root, width=40, height=10)text.pack()text.insert('1.0', '这是文本框,你可以输入任何内容\n')text.insert(tkinter.END, text.count('1.0', tkinter.END))root.mainloop()

换行\n两个字符

如果觉得《python tkinter 组件功能实例总结(代码+效果图)(Radiobutton | Button | Entry | Menu | Text)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。