我正在使用tkinter和PAGE 4.7开发设计UI的小型应用程序。我已经设计了界面并生成了python源代码。我有两个文件:
我想知道应该如何使用此文件,我的目标之一是能够根据需要重新创建该文件的次数进行多次更改,因此,如果我将代码放入其中的任何一个文件,则每个文件都会被覆盖时间。
所以,我的问题是:
由于缺乏答案,我将解释我的解决方案:
似乎不可能保持两个文件都不变,因此我进行了编辑gm_ui_support.py
(tk变量和事件回调的声明)。每次进行更改都意味着gm_ui_support.py
我会手动复制更改。
为了最大程度地减少gm_ui_support上的更改,我创建了一个名为的新文件gm_control.py
,该文件中包含所有变量(逻辑和可视)的状态dict,并具有所有可用的操作。
对gm_ui_support.py的更改:
我创建了一个通用函数(sync_control),该函数使用dict填充我的tk变量
在初始化时,它将创建我的类并调用sync_control(以获取控件中定义的默认值)
在每个回调上,我从事件中提取参数,并在调用sync_control以显示更改之后对控件类调用逻辑操作(更改状态dict)。
样本:
gm_ui_support.py
def sync_control():
for k in current_gm_control.state:
gv = 'var_'+k
if gv in globals():
#print ('********** found '+gv)
if type(current_gm_control.state[k]) is list:
full="("
for v in current_gm_state.state[k]:
if len(full)>1: full=full+','
full=full+"'"+v+"'"
full=full+")"
eval("%s.set(%s)" % (gv, full))
else:
eval("%s.set('%s')" % (gv, current_gm_state.state[k]))
else:
pass
def set_Tk_var():
global current_gm_state
current_gm_control=gm_control.GM_Control()
global var_username
var_username = StringVar()
...
sync_control()
...
def on_select_project(event):
w = event.widget
index = int(w.curselection()[0])
value = w.get(index)
current_gm_control.select_project(value)
sync_state()
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句