バッチ処理の小さなプログラムがあります。これらのファイルはマップファイルを使用して特定の設定をロードします。マップファイルの先頭には、どのディレクトリがあるかを指定する行があります。wxPythonで別のフレームの要素を変更する
現在、私は行を読み、それをソースパス変数(sPath)に割り当てることができます。ソースディレクトリのTextCtrlを更新したいのですが、MainFrameクラスにあり、マップファイルを別のクラスに読み込みます。
class Process(wx.Panel):
def loadMap(self, event):
MainFrame.sPath = str(mapFile.readline()).strip("\n")
MainFrame.loadSource(MainFrame())
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="DICOM Toolkit", size=(800,705))
self.srcTc = wx.TextCtrl(self.panel, 131, '', size=(600,25), style=wx.TE_READONLY)
def loadSource(self):
self.srcTc.SetValue(MainFrame.sPath)
私はコードの大部分を削除しましたが、上記のことはどこで問題になっているのですか? MainFrameクラスのself.srcTcをProcessクラスまたはMainFrameクラスの関数から変更するにはどうすればよいですか?私は、MainFrameクラスから生じるハンドラなしで、実際にself.srcTcを指すのに問題があります。
申し訳ありませんが、あなたの提案はある程度はうまくいきました。 MainFrameクラスのTextCtrlのSetValueとGetValueをProcessクラスから取得できるようになりました。ただし、画面上では更新されません。 – wtfomgjohnny
@wtfomgjohnnyあなたの問題は、一般的にはwxPythonとGUIではなく(私がここから見ることができる)PythonのOOPにあるようです。ここでの推測です: 'wx.App'インスタンスの' .MainLoop() 'メソッドを呼び出していますか?実際の例がなければ、私は問題を見ることができません... – jadkik94
ここにあなたの提案の私の実装と完全なコードです。 http://pastebin.com/aWr0fse0 – wtfomgjohnny