0
チェックボックスのラベルのテキストがの幅を超える場合は、wx.CheckListBoxのサイズを変更する必要があります。wxPythonで* wx.CheckListBox *のサイズを自動的に変更できますか?
チェックボックスのラベルのテキストがの幅を超える場合は、wx.CheckListBoxのサイズを変更する必要があります。wxPythonで* wx.CheckListBox *のサイズを自動的に変更できますか?
短い答えはCheckListBox
のサイズを設定しないことです。これにより、自動的にサイズが最大の項目に設定されます。サイズパラメータを設定してもテキストが収まらない場合は、style=wx.LB_HSCROLL
と設定し、必要に応じて水平スライダーを作成します。
以下の両方のバージョンのデモでは、self.clb
import wx
class ClbView(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, None, -1, 'CheckListBox', size=(250, 200))
def createWidgets(self, list):
self.panel = wx.Panel(self, -1)
# self.clb = wx.CheckListBox(self.panel, -1, size=(100,150),choices=list,style=wx.LB_HSCROLL)
self.clb = wx.CheckListBox(self.panel, -1, choices = list)
self.btn_exit = wx.Button(self.panel, wx.ID_ANY, 'Exit')
def sizeWidgets(self):
self.vbox = wx.BoxSizer(wx.VERTICAL)
self.vbox.Add(self.clb, 0, wx.ALL|wx.CENTER, 5)
self.vbox.Add(self.btn_exit, 0, wx.CENTER)
self.panel.SetSizer(self.vbox)
self.Centre()
class ClbControl:
def __init__(self):
self.list = ['Quite a long piece of text', 'Short text', 'X']
self.createView()
def createView(self):
self.view = ClbView(None)
self.view.createWidgets(self.list)
self.view.sizeWidgets()
self.view.Show()
self.view.btn_exit.Bind(wx.EVT_BUTTON, self.onExit)
self.view.clb.Bind(wx.EVT_CHECKLISTBOX, self.onCLB)
def onCLB(self, evt):
x = int(evt.GetSelection())
print "Box ",x," Accessed"
def onExit(self, evt):
self.view.Close()
if __name__ == '__main__':
app = wx.App()
controller = ClbControl()
app.MainLoop()