多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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用户表示歉意,因为他们很久以前还没有想到要重新使用此解决方案。尽管我已经用几个示例测试了这个想法,但其中一些示例包含在示例部分中,但我担心我忽略了一些大问题。因此,如果您发现任何问题或疏忽,请告诉我。