繁体   English   中英

在wxpython中将变量从一个类传递到另一个类

[英]passing variables from one class to another in wxpython

我在wxpython中将textCtrl数据从一个类传递到另一个类时遇到问题。 我尝试使用传递变量的实例方法,但是如果使用init _function,则它仅在程序启动时才有意义,并且在初始启动后不考虑对文本控件框的任何更改。 尝试了Update()或Refresh(),它也不起作用。

这是简化的代码。

class DropTarget(wx.DropTarget):


     def __init__(self,textCtrl, *args, **kwargs):
          super(DropTarget, self).__init__( *args, **kwargs)
          self.tc2=kwargs["tc2"]
          print self.tc2


class Frame(wx.Frame):

     def __init__(self, parent, tc2):
     self.tc2 = wx.TextCtrl(self, -1, size=(100, -1),pos = (170,60))#part number

def main():

     ex = wx.App()
     frame = Frame(None, None)
     frame.Show()
     b = DropTarget(None, kwarg['tc2'])
     ex.MainLoop()

if __name__ == '__main__':
    main()

以下传递变量的方法给了我一个keyerror的问题。 任何帮助表示赞赏。

这不是解决问题的最佳方法,但是我遇到了类似的问题。 如果将文本转储到临时文本文件中,则可以随时备份它。 所以会是这样的:

tmpFile = open("temp.txt",'w')
tmpFile.write(self.tc2.GetValue())
tmpFile.close()

#when you want the string back in the next class
tmpFile = open("temp.txt",'r')
string = tmpFile.read()
tmpFile.close()
os.system("del temp.txt")    #This just removes the file to clean it up, you'll need to import os if you want to do this
import wx
class DropTarget(wx.DropTarget):


     def __init__(self,textCtrl, *args, **kwargs):
          self.tc2 = kwargs.pop('tc2',None) #remove tc2 as it is not a valid keyword for wx.DropTarget
          super(DropTarget, self).__init__( *args, **kwargs)

          print self.tc2


class Frame(wx.Frame):

     def __init__(self, parent, tc2):
         #initialize the frame
         super(Frame,self).__init__(None,-1,"some title")
         self.tc2 = wx.TextCtrl(self, -1, size=(100, -1),pos = (170,60))#part number

def main():

     ex = wx.App(redirect=False)
     frame = Frame(None, None)
     frame.Show()
     #this is how you pass a keyword argument
     b = DropTarget(frame,tc2="something")
     ex.MainLoop()

if __name__ == '__main__':
    main()

您的代码中至少有一些错误...至少现在使框架

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM