0

SetLabel()フレームのクラスではないクラスでwxPythonを使用しようとしています。これが基本的に私がフレームに持っているものです:

class tradeWindow(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, "Exchange", size = (500, 190), pos = (390, 300), style = wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
        panel = wx.Panel(self)
        self.priceLabel = wx.StaticText(self, -1, label = x, pos = (84, 10))

次に、クラス外からpriceLabelのラベルを設定したいと思います。クラス内self.priceLabel.SetLabel(x)で使用できますがtradeWindow.priceLabel.SetLabel(x)、クラス外では機能しません。

4

1 に答える 1

0

クラスの外部にクラス属性を設定するには、参照を渡すか、pubsubなどを使用する必要があります。最初のフレーム(tradeWindow)から生成された2番目のフレームがあるとします。2番目のフレームを作成するときは、元のフレームへの参照として「self」をフレームに渡します。

self.newFrame = NewFrame(self)

次に、NewFrameのinitに、次のようなものがあります。

def __init__(self, parentFrame):
    wx.Frame.__init__(self, None, title="New Frame")
    self.parentFrame = parentFrame

次に、 self.parentFrame.priceLabel.SetLabelを実行できます

もう1つの解決策は、メッセージをパブリッシュするリスナーを作成するときにpubsubのようなものを使用することです。リスナーはメッセージを受信すると、ラベルの設定に使用できるイベントを発生させます。pubsubの詳細については、http ://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/を参照してください。

于 2013-03-13T18:11:38.273 に答える