# Busy Cursors
本节介绍在应用程序的长时间运行部分中如何更改光标。 更改为繁忙的光标会向应用程序用户提供一些反馈,否则他们可能会认为该应用程序已挂起,而不执行任何操作。其中一个在支持模块的模块级别包含以下代码:
~~~
# 添加了允许将默认光标更改为繁忙光标的代码。
# 格雷格·沃尔特斯(Greg Walters)在python编程示例中基于代码手动添加了变量以指示较长的过程。
# 这些例程也可以在Greyson的pg页中看到。158。
busyCursor = 'watch'
preBusyCursors = None
def busyStart(newcursor=None):
'''我们首先检查是否将值传递给newcursor。
如果没有,我们默认使用busyCursor。
然后,我们遍历busyWidgets元组,并将光标设置为所需的任何内容。'''
global preBusyCursors
if not newcursor:
newcursor = busyCursor
newPreBusyCursors = {}
for component in busyWidgets:
newPreBusyCursors[component] = component['cursor']
component.configure(cursor=newcursor)
component.update_idletasks()
preBusyCursors = (newPreBusyCursors, preBusyCursors)
def busyEnd():
'''在这个例程中,我们基本上将busyWidget元组中的小部件的游标重置为默认游标'''
global preBusyCursors
if not preBusyCursors:
return
oldPreBusyCursors = preBusyCursors[0]
preBusyCursors = preBusyCursors[1]
for component in busyWidgets:
try:
component.configure(cursor=oldPreBusyCursors[component])
except KeyError:
pass
component.update_idletasks()
# 繁忙游标代码的结尾。
~~~
并将以下代码行插入支持模块的“ init”中:
~~~
global busyWidgets
busyWidgets = (top, )
~~~
第一行在函数顶部附近,并且在创建根对象之后插入对busyWidgets的分配。 在我的一个应用程序中,函数“ init”如下所示:
~~~
def init(top, gui):
''' 创建用于定期更新GUI的线程的功能。'''
global t
global w, top_level
global busyWidgets
w = gui
top_level = top
t = threading.Thread(target=fill_window,)
t.start()
busyWidgets = (top, w.Scrolledtext1)
~~~
上面的最后一行将全局变量busyWidgets设置为我希望显示busy光标的那些小部件的元组。 这是来自示例wcpe的示例,在该示例中,我希望忙碌的光标出现在顶级窗口以及Scrolledtextbox中。当启动一段可能长时间运行的代码段(繁忙部分)时,请在开始处插入以下内容:
~~~
busyStart()
~~~
当离开繁忙的部分时,请在最后一个statement()中进行以下操作:
~~~
busyEnd()
~~~
显然,一个应用程序可能有许多忙碌的部分,它们可能与特定功能一致或不一致。
可以通用使用此代码以使用任何Tkinter游标。
- 介绍
- 更新记录
- X Concepts
- Visual Tcl
- 使用PAGE设计范例
- 项目目录配置
- Python 2 or Python 3
- Python编码和UTF-8
- 使用PAGE的简短说明
- PAGE的状态
- 安装
- PAGE界面
- 主菜单
- 子菜单
- 组件工具栏
- 属性编辑器
- 组件树
- 绑定操作窗口
- 菜单编辑器
- 首选项窗口
- Python控制台
- 回调窗口
- 应用窗口
- 颜色对话框
- 颜色
- 双显示器
- 默认值和首选项
- Preferences Windows
- Color Preferences
- Font Preferences
- 模块结构
- 风格和主题
- 使用PAGE
- 命名约定
- 概述
- Toplevel Geometry
- 别名
- 气球帮助-工具提示
- 选择和修改组件
- 修改组件位置和尺寸
- 锁定组件
- 填充容器
- 剪切,复制和粘贴
- Stash and Apply - Propagate Widget Options
- 菜单组件
- 回调函数
- 将事件链接到回调函数
- 创建绑定
- 为滚动组件创建绑定
- 定义回调函数
- 查看回调
- 指定字体
- Toplevel Widget
- 相对位置
- Tkinter变量类
- Ttk Widgets
- Scrolled Widgets
- Ttk Notebook and PNotebook
- Ttk Panedwindow
- Ttk Treeview
- Entry
- Ttk Entry
- Ttk Combobox
- Radiobuttons
- 文本和变量的奇异性
- Label
- Listbox
- Spinbox
- Scale and TScale
- TSeparator
- Sizegrip
- Custom Widgets
- Canvas
- 生成,检查和运行Python GUI
- 创建和保存代码模块
- 检查生成的Python模块
- 执行Python模块
- 将生成的Python模块加载到IDE中
- 具有多个顶级Windows的应用程序
- 修改光标
- 使用图像
- 动态组件
- 菜单
- 重建
- 自动更新支持模块
- 重用
- 模板
- 从现有项目中借用组件
- 范例
- 结语