python,wxpython的不同类间的数据传递问题

python,wxpython的不同类间的数据传递问题,第1张

你问的是几个问题。ADD是wx frame的内部处理函数,不能从外部直接调用。具体原因,你可以查一下GUI的原理。GUI是一个事件驱动的封闭体系,是一个服务。你直接调用就破坏了人家的消息处理机制。所以是不允许的。

第二个问题就变量传递,在python里有多种办法,孙伍最简单的就是用global 修饰一个变量,这样就可以在不同的线程,不同的模块间直接使用。具体使用办法,你看一下帮助。 需要孝旦在使用前用global 指定要全局化的变量

第三个问题。点击按钮触发事件。这样的事情,直接在按钮事件处理函数里处理就可以了。不用调用外部函数。没有理由,也则慎或没有必要。

如果你希望让系统容易阅读一些,就把GUI的构建代码,事件处理代码,数据描述代码,业务逻辑代码分别写在不同的模块里。这就是典型的MVC模型。

还有一个简单的办法。shownum这个函数的入口,加一个参数,将frame传递进去。这样shownum就可以直接访问frame类的所有内置公开变量。打印更不在话下。

最后附带说明一下, 你的函数命名,变量命名一定要有意思。不要再用“按钮1”, “按钮2”, output这样的命名。 你的shownum命名就不错。

问题出在事件的对象是按钮,不是frame,当然取不到。。。

两个办法吧,第一个把你的mol_frame改成成运败做员变量,self.mol_frame第二个办法把mol_frame写成一旁衡个类枯穗,独立来调用。

大致思路是这样的:面板展开的原理是改变窗口的高度,然后在使得 “服务器”那个面板出现。

改变高度使用 self.SetClientSize(wx.Size(a, b))语句,a代表宽度,b代表高度,你只要改变b的值就能控制窗口高度的变化。

“服务器”那个面板出现慎野和隐藏使用self.staticBox1.Show(False),False改成大亩True则该面板出现

示例代码如下:

def OnButton1Button(self, event):

self.SetClientSize(wx.Size(392, 193))

self.staticBox1.Show(False)

event.Skip()

这只是改变大小和可见性的示例,具体你在用到你的软件的时候要修改和添加你需要的东西。

面滚孝森板收起的原理也是一样的。

如何有不明白的可以再详细询问,希望对能帮到你!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12353268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存