2013-06-19 171 views
0
posx = 50 
for name in sheets: 
    wx.CheckBox(self, -1 ,name, (15, posx)) 
    posx = posx + 20 

当我执行此复选框出现,但他们不工作,这意味着我不能检查任何框,什么是正确的方式来添加复选框或动态按钮?如何在Wxpython中动态创建复选框或按钮?

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

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  
+0

你就必须把它添加到面板或框架,那么上面的代码将工作 –

+0

@BinayakaChakraborty:请检查编辑,我是不是做错了什么? –

+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:

+0

+1简洁:) –

+0

谢谢@BinayakaChakraborty :) – scarecrow

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

  2. Button类 - >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/