# Rework
在4.2版中,我将注意力转向了促进PAGE中的返工。也就是说,如何使用PAGE调整GUI而不丢失所编写的支持代码?同时,我想允许用户使用Python控制台中的run命令按钮查看更改。
这是情况。您设计一个GUI并使用PAGE生成Python代码,该代码创建框架函数。然后,您充实了骨架功能以支持GUI,然后决定修改GUI。如果然后再次为GUI生成Python代码,则您不想丢失为实现该应用程序而编写的应用程序代码。这是返工问题:返工GUI时如何保留艰苦的代码?
从4.2版开始,我尝试将自动生成的GUI代码与添加的支持代码尽可能地完全分开。我的方法是在一个Python模块中创建生成的GUI代码,并在要由GUI模块导入的单独的Python支持模块中创建包括骨架函数和Tk变量在内的支持代码。也就是说,现在PAGE生成两个Python模块,一个用于GUI,一个用于支持代码,并带有必要的链接。
PAGE如下实现此架构。 PAGE现在可以处理三个文件:
* “ \<name> .tcl”是适合输入PAGE的GUI设计说明。 它既可以在PAGE中创建,也可以作为参数传递给PAGE,也可以从主菜单的File子菜单中打开。
* “ \<name> .py”是PAGE生成的主要python模块,其中包含自动代码以在屏幕上创建GUI。 它是由PAGE完全生成的。 这将被称为GUI模块。
* “ \<name> _support.py”,其中包含支持GUI模块的代码。 PAGE创建此模块的框架,其中包含用于链接到GUI模块的所有必需的样板代码,以及Tkinter变量的定义和回调例程的框架版本。 我将其称为支持模块。
在上面,“ \<name>”是系统保存“ .tcl”或从文件名中提取时用户选择的应用程序名称(在原始Visual Tcl程序中称为项目名称)。作为调用PAGE时的参数。
预期用户每次修改GUI时都会生成新版本的GUI模块,但是仅当定义了新的Tkinter变量或回调函数时,才需要PAGE来修改支持模块。前者将比后者频繁得多。此外,版本4.3提供了一种通过将新的Tkinter变量和回调函数框架添加到现有支持模块来更新支持模块的机制。
任何一个Python模块的生成都将尝试保存tcl文件,这样做可能会询问您是否真的要保存它。如果您不回答“是”,则根文件名可能未知,并且可能会生成错误代码。
让我重复一遍:您只应为一个应用程序生成一次支持模块;否则,您手动添加的任何代码都会丢失。好吧,以防万一您无意中这样做,PAGE会将某些以前的版本保存为备份。如果您在GUI中添加新的或更改小部件,或修改回调函数或Tkinter变量,则必须对支持模块进行更改。
保存支持模块时,PAGE将进行测试以查看是否存在具有相同名称的支持模块,如果存在,则会询问用户是否希望继续,如果继续,是否替换或更新该模块。
有关GUI模块与支持模块分离的示例,请参见examples目录中的WCPE目录。这是一个显示WCPE程序的程序,它是我最喜欢的古典音乐电台之一。在此示例中,所有功能代码都位于WCPE\_support.py中,GUI设计记录在主模块WCPE.py中。我发现处理时区非常棘手,并且不想丢失任何代码并必须重做或处理差异。同时,我一直在不断调整GUI。我生成了导入模块一次,然后在调整GUI的同时在WCPE\_support.py中填写“ init”函数和回调函数,即更改其位置,颜色,显示字段的大小,字体等。
可能具有启发性,因为它举例说明了由两个顶级窗口组成的应用程序,其中一个窗口访问第二个窗口中的Tkinter变量。
对于cha恼,我向PAGE用户表示歉意,因为他们很久以前还没有想到要重新使用此解决方案。尽管我已经用几个示例测试了这个想法,但其中一些示例包含在示例部分中,但我担心我忽略了一些大问题。因此,如果您发现任何问题或疏忽,请告诉我。
- 介绍
- 更新记录
- 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的应用程序
- 修改光标
- 使用图像
- 动态组件
- 菜单
- 重建
- 自动更新支持模块
- 重用
- 模板
- 从现有项目中借用组件
- 范例
- 结语