如何在Wxpython中动态创建复选框或按钮?

时间:2013-06-19 05:57:33

标签: python python-2.7 wxpython

posx = 50
for name in sheets:
    wx.CheckBox(self, -1 ,name, (15, posx))
    posx = posx + 20

执行此操作时会出现复选框,但它们不起作用,这意味着我无法检查任何方框,是否正确添加复选框或按钮的方式?

我现在已经编辑了我的代码并将其添加到面板中,现在复选框甚至不显示

pnl = wx.Panel(self)
posx = 50
for name in sheets:
    cb = wx.CheckBox(pnl, label=name, pos=(20, posx))
    cb.SetValue(True)
    cb.Bind(wx.EVT_CHECKBOX, self.doSomething)
    posx = posx + 20

def doSomething(Self,e):
sender = e.GetEventObject()
isChecked = sender.GetValue()

if isChecked:
    #do something here            
else: 
    #do something else here       

2 个答案:

答案 0 :(得分:3)

这很有效。

import wx

class MyApp(wx.App):

  def OnInit(self):
    frame = InsertFrame(parent=None, id=-1)
    frame.Show()
    return True

class InsertFrame(wx.Frame):

  def __init__(self, parent, id):
    wx.Frame.__init__(self, parent, id, 'Test Frame', size = (300,100))
    panel = wx.Panel(self)
    pos_y = 0
    for i in range(50):
      pos_y += 20
      cb = wx.CheckBox(panel, label="sample checkbox", pos=(20, pos_y))

if __name__ == "__main__":
  app = MyApp()
  app.MainLoop()

这只是使用复选框设置小部件。

输出: And the output:

答案 1 :(得分:1)

  1. 复选框类 - > http://wxpython.org/docs/api/wx.CheckBox-class.html

  2. 按钮类 - > http://wxpython.org/docs/api/wx.Button-class.html

  3. 复选框的示例代码:

      #!/usr/bin/python
     # -*- coding: utf-8 -*-
    
      import wx
    
    
      class Example(wx.Frame):
    
      def __init__(self, *args, **kw):
      super(Example, self).__init__(*args, **kw) 
    
      self.InitUI()
    
      def InitUI(self):   
    
       pnl = wx.Panel(self)
    
       cb = wx.CheckBox(pnl, label='Show title', pos=(20, 20))
       cb.SetValue(True)
    
       cb.Bind(wx.EVT_CHECKBOX, self.ShowOrHideTitle)
    
       self.SetSize((250, 170))
       self.SetTitle('wx.CheckBox')
       self.Centre()
       self.Show(True)    
    
    def ShowOrHideTitle(self, e):
    
      sender = e.GetEventObject()
      isChecked = sender.GetValue()
    
      if isChecked:
        self.SetTitle('wx.CheckBox')            
      else: 
        self.SetTitle('')        
    
     def main():
    
     ex = wx.App()
      Example(None)
      ex.MainLoop()    
    
     if __name__ == '__main__':
     main()   
    
  4. 按钮的示例代码:

    import wx
    
    class MyFrame(wx.Frame):
       """make a frame, inherits wx.Frame"""
    
    def __init__(self):
       # create a frame, no parent, default to wxID_ANY
    
     wx.Frame.__init__(self, None, wx.ID_ANY, 'wxButton',
    
     pos=(300, 150), size=(320, 250))
     self.SetBackgroundColour("green")
     self.button1 = wx.Button(self, id=-1, label='Button1',
     pos=(8, 8), size=(175, 28))
     self.button1.Bind(wx.EVT_BUTTON, self.button1Click)
      # optional tooltip
      self.button1.SetToolTip(wx.ToolTip("click to hide"))
    
      # show the frame 
       self.Show(True)
        def button1Click(self,event):
        self.button1.Hide()
        self.SetTitle("Button1 clicked")
        self.button2.Show()
    
        application = wx.PySimpleApp()
        # call class MyFrame
        window = MyFrame()
        # start the event loop
        application.MainLoop()
    
  5. 所有其他wxpython小部件的好教程:( wx.Button      wx.ToggleButton,wx.StaticLine,wx.StaticText,wx.StaticBox      wx.ComboBox,wx.CheckBox,wx.StatusBar,wx.RadioButton,wx.Gauge,wx.Slider和wx.SpinCtrl) - > http://zetcode.com/wxpython/widgets/