在Functions类中,我想访问Frame类的变量。
请告诉我是否有办法。
class Functions():
def changeText():
...
...
I want to change the 'text' in the Frame class
ex )Frame.text.SetFont('change text')
GUI元素
class Frame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, ....)
....
....
self.text = wx.StaticText(panel, .....)
答案 0 :(得分:0)
您可以通过将类的实例发送到函数来执行此操作:
class myClass(object):
def __init__(self, text):
self.text = text
def changeText(input):
input.text = "world"
example = myClass("hello")
changeText(example)
答案 1 :(得分:0)
您必须告诉您的对象要处理什么。凭空而来Functions
实例将不知道(应该怎么做?)Frame
应该是什么。你可以使Frame
成为全局的,但我认为这不是一个好主意(如果你想使用多个框架实例,它会破裂)。所以你会写:
class Functors:
...
def set_text(txt_frame, the_text):
"""txt_frame has to be a :class:`my_txt_frm` instance with ``self.text`` being a ``StaticText`` instance."""
txt_frame.text.SetLabel(the_text)
class my_txt_frm(wx.Frame): # do not name the derived class Frame to make more clear it is derived!
def __init__(# ...
...
self.text = wx.StaticText(#...
现在有趣的是:如何将各个部分组合在一起?你必须在你的代码中的某个地方有这样的东西:
funct = Functors() # the class which know how to do things on our GUI elements
frm = my_txt_frm(#...
以后有些行...
funct.set_text(frm, 'thenewtext')
因此,对于具有更大图片的应用程序,有必要保留对构建块的引用,以便以后将它们绑定在一起。
将事物联系在一起的有序方式称为MVC(see a great example in the wxPython wiki)。即使你不想在这个范例之后对你的应用进行建模,你也可以从中学习如何推理关注点的分离。