私はStaticTextCtrlを含むいくつかのセルを持つGridBagSizerを使用します。これらのテキストの一部は、ユーザーの動作に応じて変更する必要があります。ですから、変更が行われたときにGUIを更新する必要があります。 GridBagSizerは、別のクラスの関数によって呼び出される関数で定義され、別のクラスの関数はGUIアセンブリ時に呼び出されます。これを説明するために、ここでのコードスニペットです:wxPython - GUIの一部を更新/更新する
class SampleClass(wx.MiniFrame):
[...some other code...]
def makeGUI(self):
# make panels
panelFoo = self.makePanelFoo()
panelBar = self.makePanelBar()
panelFinal = self.makePanelFinal()
# pack elements
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
self.mainSizer.Add(panelFoo, 1, wx.EXPAND, 0)
self.mainSizer.Add(panelBar, 1, wx.EXPAND, 0)
self.mainSizer.Add(panelFinal, 1, wx.EXPAND, 0)
# fit layout
self.mainSizer.Fit(self)
self.SetSizer(self.mainSizer)
# ----
[...some other code...]
def makePanelFinal(self):
panel = Canvas(self, -1)
# define canvas parts
self.partA = panel.makePartA()
self.partB = panel.makePartB()
self.partC = panel.makePartC()
# arrange canvas parts
mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(self.partA, 1, wx.EXPAND|wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT, mwx.PANEL_SPACE_MAIN)
mainSizer.Add(self.partB, 0, wx.EXPAND|wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT, mwx.PANEL_SPACE_MAIN)
mainSizer.Add(self.partC, 0, wx.EXPAND|wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT|wx.BOTTOM, mwx.PANEL_SPACE_MAIN)
# fit layout
mainSizer.Fit(panel)
panel.SetSizer(mainSizer)
return panel
# ----
class Canvas(panel):
[...some other code...]
def makePartC(self):
sizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, ""), wx.VERTICAL)
grid = wx.GridBagSizer(mwx.GRIDBAG_VSPACE, mwx.GRIDBAG_HSPACE)
[...some code where the GridBagSizer is made...]
sizer.Add(grid, 1, wx.EXPAND|wx.ALIGN_CENTER|wx.ALL, 5)
return sizer
私は今クラス
Canvas
で関数を定義する必要があります(または、これはクラス
SampleClass
に配置する必要があります?)と呼ばれるそのGUIの変化があるとき
必要:
def updateCanvas(self):
??? .Refresh() ???
# ----
誰かが私に使用する必要があるヒントを教えてください。
おかげで、Woodpicker
pubsubの面白いウェブページをありがとう。この例では、self.showFrameが呼び出されます。私の場合、どのような機能が必要でしょうか?私は何とかStaticTextCtrlをPublisher()。subscribe()にバインドできますか? – Woodpicker
updateStaticText(self、fName)など、好きな関数を呼び出すことができます。それから、必要なデータをpubsubハンドラから渡すだけです。 –
はい、私は好きな機能を呼び出すことができますが、私の問題は次のようになります。私の場合、この関数の最初のステップは、私の 'StsticTextCtrl'を再定義することです。その後?この変更をGUI(BoxSizerのBoxSizerのStaticBoxSizerのGridBagSizerのStaticTextCtrl)に表示するにはどうすればよいですか?私はここにどんな命令を与えることができますか?ありがとう! – Woodpicker