当前位置:首页>python>小白必学:如何在Python多窗口之间进行数据传递

小白必学:如何在Python多窗口之间进行数据传递

  • 2026-10-11 06:33:31
小白必学:如何在Python多窗口之间进行数据传递
最近有用户在论坛上提问: “如何在Python多窗口之间进行数据传递?”。这是一个简单的老问题了,今天我们来讲一下在多窗口之间进行数据传递的方法:
第一种办法:使用Fun函数库中的用户绑定变量。
     PyMe可以通过可视化操作为控件绑定用户变量,比如我们在“计算器”安例中,为顶部用于显示的Label,通过鼠标右键菜单为其绑定的变量当前数值、被运算数和运算符号。
      有了这些变量后,在开发过程中,我们就可以通过Fun函数来随时获取和设置变量,以方便逻辑处理。
    下面是涉及到用户绑定变量的函数:
(1)如果不是设计时绑定,需要手动在代码中为控件绑定一个用户变量:
def AddUserData(uiName,elementName,dataName,datatype,datavalue,isMapToText = 0): 
参数说明:
uiName:界面名称,这里如果是当前界面,保持uiName即可,如果是其它界面,要改为其它界面的名称。
elementName:控件名称,指定要将变量绑定到目标界面的哪一个控件上。比如'Entry_1'。
dataName:数据名称,指定要绑定的变量的名称,根据需要起个就好。
datatype:变量的类型标识,有'int'、'float'、'string'、'list'、'dictionary'和自定义类型名称等,用于标识类型。如果不是基本类型,根据需要起个名也可。
datavalue:变量的默认值
isMapToText:这个变量是设置是否映射到控件上,主要是对Entry或Label使用,让控件的文本显示为变量,改动时也一并改动,注意只允许有一个绑定变量可以被设置为映射到控件上。
(2)存取用户变量:
def SetUserData(uiName,elementName,dataName,datavalue):  
def GetUserData(uiName,elementName,dataName):  

 参数与上面的AddUesrData相同,就不再赘述,只是在多个窗口界面开发中,要注意uiName和elementName指向正确的目标界面。

使用说明:
如果设计时绑定了变量,在代码中就不用再调用AddUserData来进行变量绑定,需要注意的是,控件被创建出来后,才能调用用户绑定变量,如果是多窗口界面,你可以把一些全局性变量直接绑定在启动或登录界面的Form_1上就会非常方便。
第二种办法:使用Fun函数库中的全局变量字典。
在Fun函数库中有一个G_UserVarDict字典,你可以在代码编辑器中随时输入Fun.G_UserVarDict来进行访问:
比如你需要存数据时可以写:
G_UserVarDict['Admin']='honghaier'
或者
G_UserVarDict['FileList']=['a.txt','b.txt','c.txt']
它就是一个全局字典,非常灵活,多界面中也可以使用。
第三种办法:在弹出、跳转或嵌入界面时通过界面参数进行传递。
窗体之间的关系有弹出、跳转和嵌入三种,PyMe在事件操作时提供了对应这三种处理的按钮,最终都会生成相应的Fun函数。

1.弹出:呼出一个界面B,当前所在界面A不受影响。
对应的Fun函数为:
def CallUIDialog(uiName,topmost = 1,toolwindow = 1,grab_set = 1,wait_window = 1,animation='',params=None):  

参数1:呼出的界面名称 ,

参数2:是否置最前,

参数3:是否有标题栏,

参数4:是否只有当前界面接收消息。

参数5:是否等待这个界面关闭才能使用其它界面。

参数6:动画类型fadein - 渐显动画,zoomin - 缩放动画。 

参数7:传递的界面参数。


2.跳转:从当前界面A跳转到目标界面B,完成后,界面A消失。
def GoToUIDialog(uiName,targetUIName,params=None):  

参数1:当前界面名称 

参数2:跳转到的界面名称 

参数3:传递的界面参数。


3.嵌入:在指定界面的容器控件(面板、标签面板、分隔窗体)上嵌入其它界面。
def LoadUIDialog(uiName,elementName,targetUIName,params=None,ignoreSameUI=True):

参数1:目标界面名称 

参数2:目标控件名称

参数3:嵌入的界面名称 

参数4:传递的界面参数。

参数5:是否忽略重复加载


可以看到,这三个函数都有一个可用于传递数据的界面参数,你可以在呼出、跳转、嵌入界面时,指定这个参数,将需要传递的参数赋值给它,这样在目标界面里,就可以通过Fun.GetUIParams来获取传递给当前界面的参数了。

def GetUIParams(uiName):   
案例教程:

为了更好的进行说明,在案例商店的"界面基础"分类下有一个免费工程"UIData",感兴趣的小伙伴可以下载学习。

下载后,可以体验并学习。
     怎么样,今天的技巧学会了么?如果有任何问题,欢迎留言,我将会耐心解答。
PyMe官网:【www.py-me.com】

最新文章

随机文章