Tkinter教程之Scrollbar篇
- 格式:doc
- 大小:27.50 KB
- 文档页数:3
Python:GUI之tkinter学习笔记1控件的介绍及使⽤tkinter的使⽤1.模块的导⼊2.使⽤3.控件介绍TkButtonLabelFrameToplevelMenuMenubuttonCanvasEntryMessageTextListboxCheckbuttonRadiobuttonScaleScrollbar⾸发时间:2018-03-04 16:39Python的GUI各有各特点。
由于只是轻微涉及GUI开发,所以就以轻量级的tkinter来学习。
tkinter的使⽤:1.模块的导⼊[tkinter是python默认的gui库,所以⼀般不需要另外安装模块]:from tkinter import *2.使⽤:创建主窗⼝:root=Tk() 【root是⼀个主窗⼝对象】创建若⼲个控件:控件对象=控件(root,控件参数设置) 【这⾥的控件也可以添加到其他窗⼝中】将控件显⽰出来:控件对象.pack() 【这⾥也不⼀定是pack,也可以是其他的显⽰⽅式,⽐如grid,后⾯介绍】让主窗⼝持续显⽰:root.mainloop()3.控件介绍:主窗⼝Tk[所有控件都需要附着在界⾯上]:介绍:主窗⼝是所有控件附着的基础,所有控件都需要附着在界⾯上,如果程序中没有指定控件附着的窗⼝,将默认附着到主窗⼝Tk中,如果程序中没有定义Tk,那么将⾃动创建⼀个常见属性【想要初始化主窗⼝的属性需要使⽤主窗⼝对象.属性(“参数”) :title:窗⼝标题geometry:窗⼝⼤⼩,⼤写格式是”宽度x⾼度+x位置+y位置”【注意不是*是x】,其中x,y将左上⾓作为(0,0)from tkinter import *root=Tk()root.title('我的窗⼝')root.geometry('500x500')root.mainloop()按钮Button:介绍:按钮常⽤参数设置【可以在创建按钮的时候指定,也可以创建后使⽤按钮对象.config() 来设置】:text:按钮上的⽂本显⽰anchor:按钮上内容的位置[取值:n, ne, e, se, s, sw, w, nw, or center,其中n e s w是东南西北的缩写]cursor:当⿏标移动到按钮上时所显⽰的光标【arrow:箭头,cross:⼗字,dot: 点,hand1:⼿ …….】font:字体,使⽤元组来指定⼀个字体,这个元组包含了⼀个字体类型名字,⼀个以磅为单位的⾼度,代表⼀个或多个样式的字符串,⽐如("Times", 10, "bold")background[可缩写为bg]:背景⾊,取值可未英⽂颜⾊字符串,或者RGB值foreground[可缩写为fg]:前景⾊,取值可未英⽂颜⾊字符串,或者RGB值borderwidth[可缩写为bd]::边框⼤⼩activebackground:按钮处于活动状态时使⽤的背景颜⾊。
Tkinter滚动条与Canvas滚动的基本原理1. 简介Tkinter是Python的一个GUI编程库,提供了创建图形用户界面的各种工具和组件。
其中,Canvas是Tkinter中的一个重要组件,可用于绘制图形和处理用户交互。
在使用Canvas时,有时候会需要显示比可见区域更大的内容,这时就需要使用滚动条来实现内容的滚动。
Tkinter提供了Scrollbar组件,可以与Canvas组件结合使用,实现滚动功能。
本文将详细解释Tkinter滚动条与Canvas滚动的基本原理,包括滚动条的创建、滚动条与Canvas的绑定、滚动条与Canvas的交互等内容。
2. 滚动条的创建要使用滚动条,首先需要创建一个Scrollbar对象。
可以通过Scrollbar类来创建滚动条,例如:scrollbar = Scrollbar(root)其中,root是Tkinter程序的主窗口。
创建滚动条后,需要将滚动条与Canvas组件进行关联,以实现滚动功能。
3. 滚动条与Canvas的绑定要实现滚动功能,需要将滚动条与Canvas绑定在一起。
可以使用Canvas组件的yscrollcommand和xscrollcommand参数来实现滚动条与Canvas的绑定。
首先,需要设置Canvas的yscrollcommand参数,将其与滚动条的set方法绑定。
例如:canvas.config(yscrollcommand=scrollbar.set)这样,当滚动条的值发生变化时,会调用Canvas的yscrollcommand参数所绑定的方法。
然后,需要设置滚动条的command参数,将其与Canvas的yview方法绑定。
例如:scrollbar.config(command=canvas.yview)这样,当滚动条的值发生变化时,会调用Canvas的yview方法来更新Canvas的视图。
同样地,如果想实现水平方向的滚动功能,可以设置Canvas的xscrollcommand参数和滚动条的command参数,将滚动条与Canvas的xview方法绑定。
PythonGUI设计——tkinter菜鸟编程(上)GUI英⽂全称是Graphical User Interface,中⽂为图形⽤户接⼝。
tkinter是⼀个开放源码的图形接⼝开发⼯具,在安装Python时,就已经同时安装此模块了,在使⽤前只需要导⼊即可。
import tkinterprint(Version)8.61. 建⽴窗⼝from tkinter import *root = Tk()root.mainloop()通常将使⽤Tk()⽅法建⽴的窗⼝称为根窗⼝,默认名称是tk,之后可以在此根窗⼝中建⽴许多控件,也可以在此根窗⼝中建⽴上层窗⼝。
mainloop()⽅法让程序继续执⾏,同时进⼊等待与处理窗⼝事件,单击窗⼝的"关闭"按钮,此程序才会结束。
与窗⼝相关的⽅法:⽅法说明title()可以设置窗⼝的标题geometry("widthxheight+x+y")设置窗⼝宽width与⾼height,单位是像素,设定窗⼝位置maxsize(width,height)拖曳时窗⼝最⼤的宽和⾼minsize(width,height)拖曳时窗⼝最⼩的宽和⾼configure(bg="color")设置窗⼝的背景颜⾊resizable(True,Ture)可设置是否可更改窗⼝⼤⼩,第⼀个参数是宽,第⼆个参数是⾼,如果要固定窗⼝宽与⾼,可以使⽤resizable(0,0)state("zoomed")最⼤化窗⼝iconify()最⼩化窗⼝iconbitmap("xx.ico")更改默认窗⼝图标root = Tk()root.title("MyWindow")root.geometry("300x160+400+200")root.configure(bg="#33ff33")root.iconbitmap("mystar.ico")root.mainloop()geometry中width和height⽤x分隔,表⽰窗⼝的宽和⾼,+x是窗⼝左边距离屏幕左边的距离,如果是-x则是表⽰窗⼝右边距离屏幕右边的距离,同理,+y或-y表⽰窗⼝上边(下边)距离屏幕上边(下边)的距离。
tkinter 手册tkinter 是 Python 的标准 GUI 库,可以用来开发图形界面程序。
它基于 Tk GUI 工具箱,并提供了 Python 接口。
下面是一些常用函数和方法。
## 窗口类### Tk这是主窗口类,它表示应用程序的主窗口。
例子:```pythonfrom tkinter import *root = Tk()root.mainloop()```### Toplevel这是顶层窗口类,可以用于创建多窗口应用程序。
例子:```pythonfrom tkinter import *root = Tk()top = Toplevel(root)top.mainloop()```## 控件类### Label文本标签,用于显示文本内容。
例子:```pythonfrom tkinter import *root = Tk()label = Label(root, text='Hello, World!')label.pack()root.mainloop()```### Button按钮,用于触发事件。
例子:```pythonfrom tkinter import *def on_click():print('Clicked!')root = Tk()button = Button(root, text='Click me', command=on_click) button.pack()root.mainloop()```### Entry文本框,用于输入文本内容。
例子:```pythonfrom tkinter import *root = Tk()entry = Entry(root)entry.pack()root.mainloop()```### Text文本框,用于显示和编辑文本内容。
例子:```pythonfrom tkinter import *root = Tk()text = Text(root)text.pack()root.mainloop()```### Canvas画布,用于绘制图形和显示图片。
python tkinter用法Python Tkinter用法Python Tkinter是一个基于Tk GUI工具包的Python标准GUI库。
它提供了创建GUI应用程序所需的所有组件,如按钮、标签、文本框、滚动条等。
以下是Python Tkinter的一些常见用法:1. 创建一个窗口首先,需要导入Tkinter模块并创建一个窗口对象。
```pythonimport tkinter as tkroot = ()```2. 添加组件可以使用以下代码添加不同类型的组件:```python# 添加标签label = bel(root, text="Hello, World!")label.pack()# 添加按钮button = tk.Button(root, text="Click me!")button.pack()# 添加文本框entry = tk.Entry(root)entry.pack()```3. 布局管理器Tkinter提供了三种布局管理器:pack、grid和place。
pack将组件放在容器中,并根据需要自动调整大小和位置。
grid将组件放在网格中,并允许您指定每个单元格的行和列。
place允许您指定组件的精确位置和大小。
```python# pack布局管理器示例label1 = bel(root, text="Label 1")label1.pack(side="left")label2 = bel(root, text="Label 2")label2.pack(side="right")button1 = tk.Button(root, text="Button 1")button1.pack(side="top")button2 = tk.Button(root, text="Button 2")button2.pack(side="bottom")```4. 绑定事件可以使用bind()方法将事件绑定到组件上。
Tkinter组件Entry的具体使⽤⽬录何时使⽤ Entry 组件?⽤法参数⽅法关于验证详解Entry(输⼊框)组件通常⽤于获取⽤户的输⼊⽂本。
何时使⽤ Entry 组件?Entry 组件仅允许⽤于输⼊⼀⾏⽂本,如果⽤于输⼊的字符串长度⽐该组件可显⽰空间更长,那内容将被滚动。
这意味着该字符串将不能被全部看到(你可以⽤⿏标或键盘的⽅向键调整⽂本的可见范围)。
如果你希望接收多⾏⽂本的输⼊,可以使⽤ Text 组件(后⾯介绍)。
⽤法使⽤代码为 Entry 组件添加⽂本,可以使⽤ insert() ⽅法。
如果要替换当前⽂本,可以先使⽤ delete() ⽅法,再使⽤ insert() ⽅法实现:import tkinter as tkmaster = ()e = tk.Entry(master)e.pack(padx=20, pady=20)e.delete(0, "end")e.insert(0, "默认⽂本...")master.mainloop()获取当前输⼊框的⽂本,可以使⽤ get() ⽅法:s = e.get()你也可以绑定 Entry 组件到 Tkinter 变量(StringVar),并通过该变量设置和获取输⼊框的⽂本:v = tk.StringVar()e = tk.Entry(master, textvariable=v)e.pack()v.set("I love Python!")s = v.get()下边的例⼦演⽰将 Entry 组件和 Button 组件配合,点击 “获取信息” 按钮时⾃动清空输⼊框并将内容输出:import tkinter as tkmaster = ()bel(master, text="作品:").grid(row=0)bel(master, text="作者:").grid(row=1)e1 = tk.Entry(master)e2 = tk.Entry(master)e1.grid(row=0, column=1, padx=10, pady=5)e2.grid(row=1, column=1, padx=10, pady=5)def show():print("作品:《%s》" % e1.get())print("作者:%s" % e2.get())e1.delete(0, "end")e2.delete(0, "end")tk.Button(master, text="获取信息", width=10, command=show).grid(row=3, column=0, sticky="w", padx=10, pady=5)tk.Button(master, text="退出", width=10, command=master.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5)master.mainloop()最后需要提到的是 Entry 组件允许通过以下⼏种⽅式指定字符的位置:数字索引号"anchoe""end""insert"⿏标坐标("@x")数字索引号:常规的 Python 索引号,从 0 开始"anchor":对应第⼀个被选中的字符(如果有的话)"end":对应已存在⽂本的后⼀个位置"insert":对应插⼊光标的当前位置⿏标坐标("@x"):x 是⿏标位置与 Entry 左侧边缘的⽔平距离,这样就可以通过⿏标相对地定位字符的位置参数Entry(master=None, **options) (class)master -- ⽗组件**options -- 组件选项,下⽅表格详细列举了各个选项的具体含义和⽤法:选项含义background 1. 设置 Entry 的背景颜⾊2. 默认值由系统指定bg跟 background ⼀样borderwidth 1. 设置 Entry 的边框宽度2. 默认值是 1 或 2 像素bd跟 borderwidth ⼀样cursor 1. 指定当⿏标在 Entry 上飘过的时候的⿏标样式2. 默认值由系统指定exportselection 1. 指定选中的⽂本是否可以被复制到剪贴板2. 默认值是 True3. 可以修改为 False 表⽰不允许复制⽂本font 1. 指定 Entry 中⽂本的字体2. 默认值由系统指定foreground 1. 设置 Entry 的⽂本颜⾊2. 默认值由系统指定fg跟 foreground ⼀样highlightbackground 1. 指定当 Entry 没有获得焦点的时候⾼亮边框的颜⾊2. 默认值由系统指定highlightcolor 1. 指定当 Entry 获得焦点的时候⾼亮边框的颜⾊2. 默认值由系统指定highlightthickness 1. 指定⾼亮边框的宽度2. 默认值是 1 或 2 像素insertbackground指定输⼊光标的颜⾊insertborderwidth 1. 指定输⼊光标的边框宽度2. 如果被设置为⾮ 0 值,光标样式会被设置为 RAISED3. ⼩甲鱼温馨提⽰:将 insertwidth 设置⼤⼀点才能看到效果哦insertofftime 1. 该选项控制光标的闪烁频率(灭)2. 单位是毫秒insertontime 1. 该选项控制光标的闪烁频率(亮)2. 单位是毫秒insertwidth 1. 指定光标的宽度2. 默认值是 1 或 2 像素invalidcommand 1. 指定当输⼊框输⼊的内容“⾮法”时调⽤的函数2. 也就是指定当 validateCommand 选项指定的函数返回 False 时的函数3. 详见本内容最下⽅⼩甲鱼关于验证详解invcmd跟 invalidcommand ⼀样justify 1. 定义如何对齐输⼊框中的⽂本2. 使⽤ "left","right" 或 "center"3. 默认值是 "left"relief 1. 指定边框样式2. 默认值是 "sunken"3. 其他可以选择的值是 "flat","raised","groove" 和 "ridge"selectbackground 1. 指定输⼊框的⽂本被选中时的背景颜⾊2. 默认值由系统指定selectborderwidth 1. 指定输⼊框的⽂本被选中时的边框宽度(选中边框)2. 默认值由系统指定selectforeground 1. 指定输⼊框的⽂本被选中时的字体颜⾊2. 默认值由系统指定show 1. 设置输⼊框如何显⽰⽂本的内容2. 如果该值⾮空,则输⼊框会显⽰指定字符串代替真正的内容3. 将该选项设置为 "*",则是密码输⼊框state 1. Entry 组件可以设置的状态:"normal","disabled" 或 "readonly"(注意,它跟 "disabled" 相似,但它⽀持选中和拷贝,只是不能修改,⽽ "disabled" 是完全禁⽌)2. 默认值是 "normal"3. 注意,如果此选项设置为 "disabled" 或 "readonly",那么调⽤ insert() 和 delete() ⽅法都会被忽略takefocus 1. 指定使⽤ Tab 键可以将焦点移动到输⼊框中2. 默认是开启的,可以将该选项设置为 False 避免焦点在此输⼊框中textvariable 1. 指定⼀个与输⼊框的内容相关联的 Tkinter 变量(通常是 StringVar)2. 当输⼊框的内容发⽣改变时,该变量的值也会相应发⽣改变validate 1. 该选项设置是否启⽤内容验证2. 详见本内容最下⽅⼩甲鱼关于验证详解validatecommand 1. 该选项指定⼀个验证函数,⽤于验证输⼊框内容是否合法2. 验证函数需要返回 True 或 False 表⽰验证结果3. 注意,该选项只有当 validate 的值⾮ "none" 时才有效3. 详见本内容最下⽅⼩甲鱼关于验证详解vcmd跟 validatecommand ⼀样1. 设置输⼊框的宽度,以字符为单位width 2. 默认值是 203. 对于变宽字体来说,组件的实际宽度等于字体的平均宽度乘以 width 选项的值xscrollcommand 1. 与 scrollbar(滚动条)组件相关联2. 如果你觉得⽤户输⼊的内容会超过该组件的输⼊框宽度,那么可以考虑设置该选项3. 使⽤⽅法可以参考:Scrollbar 组件⽅法delete(first, last=None)-- 删除参数 first 到 last 范围内(包含 first 和 last)的所有内容-- 如果忽略 last 参数,表⽰删除 first 参数指定的选项-- 使⽤ delete(0, END) 实现删除输⼊框的所有内容get()-- 获得当前输⼊框的内容icursor(index)-- 将光标移动到 index 参数指定的位置-- 这同时也会设置 INSERT 的值index(index)-- 返回与 index 参数相应的选项的序号(例如 e.index(END))insert(index, text)-- 将 text 参数的内容插⼊到 index 参数指定的位置-- 使⽤ insert(INSERT, text) 将 text 参数指定的字符串插⼊到光标的位置-- 使⽤ insert(END, text) 将 text 参数指定的字符串插⼊到输⼊框的末尾scan_dragto(x)-- 见下⽅ scan_mark(x)scan_mark(x)-- 使⽤这种⽅式来实现输⼊框内容的滚动-- 需要将⿏标按下事件绑定到 scan_mark(x) ⽅法(x 是⿏标当前的⽔平位置),然后再将 <motion> 事件绑定到scan_dragto(x) ⽅法(x 是⿏标当前的⽔平位置),就可以实现输⼊框在当前位置和 sacn_mack(x) 指定位置之间的⽔平滚动select_adjust(index)-- 与 selection_adjust(index) 相同,见下⽅解释select_clear()-- 与 selection_clear() 相同,见下⽅解释select_from(index)-- 与 selection_from(index) 相同,见下⽅解释select_present()-- 与 selection_present() 相同,见下⽅解释select_range(start, end)-- 与 selection_range(start, end) 相同,见下⽅解释select_to(index)-- 与 selection_to(index) 相同,见下⽅解释selection_adjust(index)-- 该⽅法是为了确保输⼊框中选中的范围包含 index 参数所指定的字符-- 如果选中的范围已经包含了该字符,那么什么事情也不会发⽣-- 如果选中的范围不包含该字符,那么会从光标的位置将选中的范围扩展⾄该字符selection_clear()-- 取消选中状态selection_from(index)-- 开始⼀个新的选中范围-- 会设置 ANCHOR 的值selection_present()-- 返回输⼊框是否有处于选中状态的⽂本-- 如果有则返回 True,否则返回 Falseselection_range(start, end)-- 设置选中范围-- start 参数必须必 end 参数⼩-- 使⽤ selection_range(0, END) 选中整个输⼊框的所有内容selection_to(index)-- 选中 ANCHOR 到 index 参数的间的所有内容xview(index)-- 该⽅法⽤于确保给定的 index 参数所指定的字符可见-- 如有必要,会滚动输⼊框的内容xview_moveto(fraction)-- 根据 fraction 参数给定的⽐率调整输⼊框内容的可见范围-- fraction 参数的范围是 0.0 ~ 1.0,0.0 表⽰输⼊框的开始位置,1.0 表⽰输⼊框的结束位置xview_scroll(number, what)-- 根据给定的参数⽔平滚动输⼊框的可见范围-- number 参数指定滚动的数量,如果是负数则表⽰反向滚动-- what 参数指定滚动的单位,可以是 UNITS 或 PAGES(UNITS 表⽰⼀个字符单元,PAGES 表⽰⼀页)关于验证详解由于查看了不少资料,很多在这⾥都没有解释清楚,所以这⾥单独列出来详细讲解下。
python tkinter案例Python Tkinter是一个用于创建图形用户界面的Python库。
它提供了许多组件和工具,使开发人员能够轻松地构建用户友好的应用程序。
在本文中,我将分享十个使用Python Tkinter库创建的案例,展示其强大的功能和灵活性。
1. 简单的窗口应用程序让我们创建一个简单的窗口应用程序,展示Tkinter库的基本用法。
在这个应用程序中,我们将在窗口中显示一段文本,并添加一个按钮。
当用户点击按钮时,将弹出一个消息框显示“Hello, Tkinter!”的消息。
```pythonimport tkinter as tkfrom tkinter import messageboxdef show_message():messagebox.showinfo("Message", "Hello, Tkinter!")# 创建主窗口root = ()root.title("Simple Window App")# 添加标签label = bel(root, text="Welcome to Tkinter!")label.pack()# 添加按钮button = tk.Button(root, text="Click Me", command=show_message) button.pack()# 运行主循环root.mainloop()```2. 输入框与按钮在这个案例中,我们将创建一个带有输入框和按钮的应用程序。
用户可以在输入框中输入文本,然后点击按钮,将文本显示在标签中。
```pythonimport tkinter as tkdef show_text():text = entry.get()label.config(text=text)# 创建主窗口root = ()root.title("Input and Button App")# 添加输入框entry = tk.Entry(root)entry.pack()# 添加按钮button = tk.Button(root, text="Show Text", command=show_text) button.pack()# 添加标签label = bel(root, text="")label.pack()# 运行主循环root.mainloop()```3. 列表框下一个案例中,我们将展示如何使用列表框组件。
Python Scrollbar 方法详解在Python的图形用户界面(GUI)编程中,Scrollbar是不可或缺的一部分。
它主要用来帮助用户在内容超过窗口大小的情况下,滚动查看更多的内容。
Python提供了强大的库如Tkinter等来创建和使用Scrollbar。
本文将详细介绍Python Scrollbar的方法。
1. 创建Scrollbar在Tkinter中,可以使用Scrollbar类来创建Scrollbar对象。
基本语法如下:```pythonscrollbar = Scrollbar(master, options)```其中,`master`参数是Scrollbar所在的父窗口,`options`是一个字典,用于设置Scrollbar的属性,如颜色、宽度等。
2. 配置Scrollbar创建Scrollbar后,可以通过调用Scrollbar的config()方法来配置其属性。
例如:```pythonscrollbar.configmand=scrollmand)```其中,mand`参数是要执行的滚动命令,通常是一个函数名。
3. 绑定Scrollbar为了使Scrollbar能够正确工作,需要将其绑定到一个可以滚动的控件上,如Text或Listbox。
这通常是通过设置该控件的yscrolmand属性实现的。
例如:```pythontext_widget.configure(yscrolmand=scrollbar.set)```4. 控制ScrollbarScrollbar的控制主要是通过调用其set()方法和get()方法。
set()方法用于设置Scrollbar的位置,get()方法用于获取Scrollbar的位置。
例如:```pythonscrollbar.set(position)current_position = scrollbar.get()```5. 滚动命令当用户操作Scrollbar时,会触发一个滚动命令。
scrollbar参数1.引言1.1 概述概述部分的内容可以简要介绍scrollbar参数的基本概念和作用。
可以包括以下内容:scrollbar参数是一个常见的页面显示元素,用于控制网页或应用程序中可滚动区域的滚动行为。
它通常以滚动条的形式出现,可以被用户拖动或点击,以改变显示内容的位置。
scrollbar参数的作用不仅是提供视觉上的滚动功能,更重要的是它是用户与可滚动区域交互的工具。
它可以用于调整显示的内容范围,方便用户在有限的空间内浏览大量的信息。
通过拖动或点击滚动条,用户可以轻松地切换到所需的位置。
在网页设计和开发中,scrollbar参数通常用于控制长内容的滚动,如长网页、文章列表、聊天记录等。
通过合理的使用scrollbar参数,可以提高用户的浏览体验,提供更好的交互效果。
本文将重点讨论scrollbar参数的定义和使用场景,并探讨其重要性以及优化方法。
通过深入了解和学习scrollbar参数,我们可以更好地应用它,提升我们网页或应用程序的用户体验。
在下文中,我们将详细介绍scrollbar参数的定义和具体的使用场景,以帮助读者更好地理解和运用该参数。
1.2文章结构1.2 文章结构本文将从以下几个方面对scrollbar参数进行详细介绍和分析:1.2.1 概述:在本部分,我们将对scrollbar参数进行简要概述,包括其基本定义和作用。
我们将介绍scrollbar参数在界面设计中的重要性,并指出它对于用户体验和整体应用程序的影响。
1.2.2 参数详解:在这一部分,我们将深入探讨scrollbar参数的各种属性和用法。
我们将介绍scrollbar的位置、尺寸、样式和交互等方面的参数设置,并提供一些常见的实例供读者参考。
此外,我们还会介绍如何在不同平台和浏览器环境下使用该参数,并提供一些实用的技巧和建议。
1.2.3 案例分析:在本章节中,我们将通过真实案例来展示scrollbar参数的使用场景。
Python Tkinter GUI编程Python Tkinter是Python语言的一种图形用户界面(GUI)编程工具包,它提供了一组工具和组件,使得程序员可以在Python程序中创建一个交互式的界面,用于处理用户输入,展示输出等交互性操作。
Python Tkinter也被广泛地应用于很多相对简单的GUI程序开发,包括桌面应用、窗口提示框、列表框、标签等控件。
本文旨在探讨Python Tkinter编程的基本特征、使用场景、优缺点、以及一些实用技巧等。
一、Python Tkinter的基本特征Python Tkinter提供了丰富的GUI控件,比如:1.标签(Label)和按钮(Button)控件用于创建许多用户界面上标准而常见的控件。
2.输入框(Entry box)控件和文本框(Text box)控件用于让用户输入数据或查看输出结果。
3.滚动条(Scrollbar)控件、列表框(Listbox)控件、下拉列表框(ComboBox)控件和多选框(Checkbutton)控件等用于展示和管理视图或者选择/操作数据。
4.菜单(Menu)和工具栏(Toolbar)控件用于创建功能性组件和其他交互式辅助应用程序。
除此之外,Python Tkinter还提供了一系列其他特点:1.模块化:Python Tkinter模块是可重用、可扩展、可移植和可维护的。
2.简单易学:Python Tkinter已经被设计成一种易于使用的编程语言,其提供的API使用起来简单、直接、自然并且易于理解。
3.操作系统兼容性:Python Tkinter可以在所有主要的操作系统平台上运行,包括Windows、Mac OS和Linux等。
4.提供多种语言支持:Python Tkinter支持多种语言,如Python、C、C++等。
5.开发效率高:Python Tkinter提供了丰富的GUI控件和操作方法,极大地提高了开发效率和代码的重用性。
#Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva等)结合使用
'''1.创建一个Scrollbar'''
from Tkinter import*
root = Tk()
Scrollbar(root).pack()
root.mainloop()
#显示了一个Scrollbar,但什么也做不了,无法拖动slider。
from Tkinter import*
root = Tk()
sl = Scrollbar(root)
sl.set(0.5,0)
sl.pack()
root.mainloop()
'''2.通过set方法来设置slider的位置'''
#使用水平滚动条,通过set将值设置为(0.5,1),即slider占整个Srollbar的一半
from Tkinter import*
root = Tk()
sl = Scrollbar(root,orient = HORIZONTAL)
sl.set(0.5,1)
sl.pack()
root.mainloop()
'''3.使用回调函数(不建议这样使用)'''
# -*- coding: cp936 -*-
from Tkinter import*
root = Tk()
def scrollCall(moveto,pos):
#如何得到两个参数:使用如下打印中的信息,可以看到解释器传给scrollCall函数的两个参数,一个为
#moveto,参考手册可以得知,它是当拖动slider时调用的函数;另一个参数为slider的当前位置,我们
#可以通过set函数来设置slider的位置,因此使用这个pos就可以完成控制slider的位置。
#print moveto,pos
sl.set(pos,0)
print sl.get()
sl = Scrollbar(root,orient = HORIZONTAL,command = scrollCall)
sl.pack()
root.mainloop()
#这样还有一个严重问题,只能对其进行拖动。
对两个按钮及pagedwon/pageup 的响应,由于up按钮响应的为三个参数,故会出
#现异常。
这个例子只是用来说明command属性是可用的,如果喜欢自己可以处理所有的消息,将scrollCall是否可以改为变参数函数?
#对于不同的输入分别进行不同的处理。
'''4.单独使用还是比较少见,大部分应用还是与其它控件的绑定,以下是将一个Listbox与Scrollbar绑定的例子'''
# -*- coding: cp936 -*-
from Tkinter import*
root = Tk()
lb = Listbox(root)
sl = Scrollbar(root)
sl.pack(side = RIGHT,fill = Y)
#side指定Scrollbar为居右;fill指定填充满整个剩余区域,到WM在时候再详细介绍这几个属性。
#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
lb['yscrollcommand']= sl.set
for i in range(100):
lb.insert(END,str(i))
#side指定Listbox为居左
lb.pack(side = LEFT)
#下面的这句是关键:指定Scrollbar的command的回调函数是Listbar的yview sl['command']= lb.yview
root.mainloop()
'''5.这样理解二者之间的关系:当Listbox改变时,Scrollbar调用set以改变slder的位置;当Scrollbar改变了slider的位置时,Listbox调用yview 以显示新的list项,为了演示这两种关系先将yscrollcommad与scrollbar的set解除绑定,看看会有什么效果'''
# -*- coding: cp936 -*-
from Tkinter import*
root = Tk()
lb = Listbox(root)
sl = Scrollbar(root)
sl.pack(side = RIGHT,fill = Y)
#解除Listbox的yscrollcommand与Scrollbar的set绑定
#lb['yscrollcommand']= sl.set
for i in range(100):
lb.insert(END,str(i))
#使用索引为50的元素可见
lb.see(50)
lb.pack(side = LEFT)
sl['command']= lb.yview
root.mainloop()
#运行结果,Listbox显示了50项,即Listbox的视图已经到50了,但Scrollbar 的slider仍旧位于0处。
也就是说Scroolbar没有收到set
#的命令。
即说明解除此绑定,Scrollbar将不再响应Listbox视图改变的消息。
但仍可以使用Scrollbar的slider来移动Listbox的视图。
'''6.再测试一下,解除Scrollbar的command与Listbox的yview的关系,测试代码如下:'''
# -*- coding: cp936 -*-
from Tkinter import*
root = Tk()
lb = Listbox(root)
sl = Scrollbar(root)
sl.pack(side = RIGHT,fill = Y)
#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
lb['yscrollcommand']= sl.set
for i in range(100):
lb.insert(END,str(i*100))
#使用索引为50的元素可见
lb.see(50)
lb.pack(side = LEFT)
#解除Scrollbar的command与Listbox的yview的关系
#sl['command']= lb.yview
root.mainloop()
#运行程序,Scrollbar的slider已经到了50位置,也就是说Scrollbar响应了Listbox视图改变的消息,调用了自己的set函数。
#进行操作:拖动slder或点击up/down按钮,Listbox的视图没有任何反应,即Listbox不会响应Scrollbar的消息了。