qianaonan 发表于 2023-3-3 17:14

各位大佬,A.py文件中的class中的def下的变量t,我想从A.py用到B.py

本帖最后由 qianaonan 于 2023-3-6 10:13 编辑

class Frame(wx.Frame):
    def __init__(self):
      wx.Frame.__init__(self, None, title='', size=(329, 190),name='frame',style=541072960)
      self.启动窗口 = wx.Panel(self)
      self.Centre()
      self.编辑框1 = wx.TextCtrl(self.启动窗口,size=(109, 22),pos=(71, 21),value='',name='text',style=0)
      self.编辑框2 = wx.TextCtrl(self.启动窗口,size=(109, 22),pos=(70, 55),value='',name='text',style=2048)
      self.标签1 = wx.StaticText(self.启动窗口,size=(52, 24),pos=(8, 24),label='账户',name='staticText',style=2321)
      self.标签2 = wx.StaticText(self.启动窗口,size=(55, 24),pos=(8, 59),label='密码',name='staticText',style=2321)
      self.按钮2 = wx.Button(self.启动窗口,size=(80, 32),pos=(214, 35),label='按钮',name='button')
      self.按钮2.Bind(wx.EVT_BUTTON,self.按钮2_按钮被单击)
      self.单选框1 = wx.RadioButton(self.启动窗口,size=(80, 24),pos=(17, 111),name='600',label='10分钟')
      self.单选框1.SetValue(True)
      self.单选框2 = wx.RadioButton(self.启动窗口,size=(80, 24),pos=(108, 111),name='1800',label='30分钟')
      self.单选框3 = wx.RadioButton(self.启动窗口,size=(80, 24),pos=(192, 111),name='3600',label='60分钟')
      self.单选框1.Bind(wx.EVT_RADIOBUTTON,self.radioEvent)
      self.单选框2.Bind(wx.EVT_RADIOBUTTON,self.radioEvent)
      self.单选框3.Bind(wx.EVT_RADIOBUTTON,self.radioEvent)

    def radioEvent(self, event):
      t = int(event.GetEventObject().Name)
      print(t)
class myApp(wx.App):
    defOnInit(self):
      self.frame = Frame()
      self.frame.Show(True)
      return True
if __name__ == '__main__':
    app = myApp()
    app.MainLoop()

这里我是先执行如上A代码用os.system来执行B.py,就想问问print的变量t用到B.py中,这个该如何调用?

我试过from a import Frame,然后print(Frame.radioEvent),但是输出<function Frame.radioEvent at 0x03F2EC48>,并没有显示t的变量值。

土鸡炖蘑菇 发表于 2023-3-3 17:23

importA#加载A.py

at = A.t #赋值给at , 不赋值也行,

print(at)   #调用赋值后的at
print(A.t)   #直接调用

听海哭的声音_ 发表于 2023-3-3 17:24

你在B.PY里调用a的函数然后保存值就可以了

ccwuax 发表于 2023-3-3 17:24

首先不明白你为什么要这么做,其次,再简单傻瓜的做法可以写入文件,想哪儿读取都行:lol

qianaonan 发表于 2023-3-3 17:28

ccwuax 发表于 2023-3-3 17:24
首先不明白你为什么要这么做,其次,再简单傻瓜的做法可以写入文件,想哪儿读取都行

我想试试这么做为了加快pyinstaller打包后的exe运行速度,因为打包后的exe执行速度特别慢和卡

qianaonan 发表于 2023-3-3 17:31

ccwuax 发表于 2023-3-3 17:24
首先不明白你为什么要这么做,其次,再简单傻瓜的做法可以写入文件,想哪儿读取都行

主要是想向大佬们学学,两个py文件之间的相互调用;www

qianaonan 发表于 2023-3-3 17:32

土鸡炖蘑菇 发表于 2023-3-3 17:23
importA#加载A.py

at = A.t #赋值给at , 不赋值也行,


我这么执行显示a没有t这个属性

MakoStar 发表于 2023-3-3 18:20

可不可以创建个类变量或者实例变量来保存,或者其他模块调用的时候创建这个类的实例再保存这个事件对象的值{:301_992:}

wangtietou 发表于 2023-3-3 18:38

a.py================
import time
class classA:
    def __init__(self):
      time.sleep(0.1)
    def funcA(x,y):
         t=x+y
         return t

b.py=======
import a
b=a.classA.funcA(1,2)
print(b)

如果a.py是print,在b调用也会执行打印,而不是赋值

pjy612 发表于 2023-3-3 18:38

本帖最后由 pjy612 于 2023-3-3 18:47 编辑

没理解你是要弄啥啊。。。

os.system 调用B是什么意思?
要么 你在A里面引入B 然后给B的某个变量赋值 t 然后调用B的 主函数

还是说 你想 os.system("python B.py") ?
那你干脆 os.system("B.py t的值")
然后 B.py 里面根据 args 什么的去取值。。。

还是说 你启动一个A.py,然后 启动一个 B.py
然后 A 里面 操作了 radio 取到了值,要让 B 能接受到?
那去研究rpc啥的 或者进程间通信吧。。。


如果 你的 B 是个 类似 子app 的东西。正常来说 抽成携程的逻辑。
或者 在 B里面 创建 按钮的回调监听事件

A 里面 初始化并run B的后台逻辑。
然后 给 按钮 绑定 B 里面的 事件。。。
页: [1] 2 3
查看完整版本: 各位大佬,A.py文件中的class中的def下的变量t,我想从A.py用到B.py