私は独学で (Wx) Python を教えていますが、行き詰まってしまいました。ほとんどのコードを含む TestFrame 内に一連の繰り返し情報を持つ子ウィンドウを作成したいと考えています。問題は、コードに 1 つのウィジェットしか表示されないことです。私にとって重要な順に、次のことを理解しようとしています。
**このコードはこのページの拡張機能であることに注意してください。*
- 「AddBox」クラスの複数のウィジェットが正しく表示されるようにするにはどうすればよいですか?
- ウィンドウのサイズを変更すると、添付の画面のようにボタンの画像が破損します。どうすればこれを修正できますか?
- これらの動的に作成されたウィジェットのそれぞれをどのように呼び出し/バインドしますか?
- おまけ:「OnSize」モジュールはここで必要ですか?
ご協力ありがとうございました。許可/適切であれば、私に PM を送信していただければ、Paypal 経由で当選者に 5 ドルを寄付します。
import wx
class AddBox(wx.Window):
def __init__(self, parent):
wx.Window.__init__(self, parent)
pbox = wx.BoxSizer(wx.VERTICAL)
controlback = wx.Button(self, label="Back")
controlforward = wx.Button(self, label="Forward")
pbox.AddMany([(controlback, 1, wx.ALL), (controlforward, 1, wx.ALL)])
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, size=(1000, 550))
self.Bind(wx.EVT_SIZE, self.OnSize)
pbox0 = wx.BoxSizer(wx.VERTICAL)
controlback0 = wx.Button(self, label="Back0")
controlforward0 = wx.Button(self, label="Forward0")
pbox0.AddMany([(controlback0, 1, wx.ALL), (controlforward0, 1, wx.ALL)])
pbox2 = wx.BoxSizer(wx.VERTICAL)
self.scrolling_window = wx.ScrolledWindow( self )
self.scrolling_window.SetScrollRate(1,6)
self.scrolling_window.EnableScrolling(True,True)
self.sizer_container = wx.BoxSizer( wx.VERTICAL )
self.sizer = wx.BoxSizer( wx.VERTICAL )
self.sizer_container.Add(self.sizer,1,wx.CENTER,wx.EXPAND)
self.child_windows = []
for i in range(0,8):
wind = AddBox(self.scrolling_window)
self.sizer.Add(wind, 0, wx.CENTER|wx.ALL, 5)
self.child_windows.append(wind)
self.scrolling_window.SetSizer(self.sizer_container)
#self.Layout() #not needed?
pbox2.AddMany([(self.sizer_container, 1, wx.ALL)])
def OnSize(self, event):
self.scrolling_window.SetSize(self.GetClientSize())
if __name__=='__main__':
app = wx.PySimpleApp()
f = TestFrame()
f.Show()
app.MainLoop()