【问题标题】:Assigning list of labels to radiobuttons using wxpython使用 wxpython 将标签列表分配给单选按钮
【发布时间】:2013-09-08 17:35:42
【问题描述】:

我有一个文件名数组,每次用户打开新文件时都会更新。我想要这些文件名作为标签的单选按钮。 wxpython中有没有像wxcheckboxlistbox这样的函数,它将数组作为单选按钮的输入? 我最近开始使用 wxpython。非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    是的 - 它被称为wx.RadioBox

    来自演示:

    import  wx
    
    #---------------------------------------------------------------------------
    
    class TestRadioBox(wx.Panel):
        def __init__(self, parent, log):
            self.log = log
            wx.Panel.__init__(self, parent, -1)
            #self.SetBackgroundColour(wx.BLUE)
        sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
                      'six', 'seven', 'eight']
    
        sizer = wx.BoxSizer(wx.VERTICAL)
    
        rb = wx.RadioBox(
                self, -1, "wx.RadioBox", wx.DefaultPosition, wx.DefaultSize,
                sampleList, 2, wx.RA_SPECIFY_COLS
                )
    
        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
        #rb.SetBackgroundColour(wx.BLUE)
        rb.SetToolTip(wx.ToolTip("This is a ToolTip!"))
        #rb.SetLabel("wx.RadioBox")
    
        sizer.Add(rb, 0, wx.ALL, 20)
    
        rb = wx.RadioBox(
                self, -1, "", wx.DefaultPosition, wx.DefaultSize,
                sampleList, 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER
                )
    
        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
        rb.SetToolTip(wx.ToolTip("This box has no label"))
    
        sizer.Add(rb, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM, 20)
    
        self.SetSizer(sizer)
    
    
    def EvtRadioBox(self, event):
        self.log.WriteText('EvtRadioBox: %d\n' % event.GetInt())
    
    #---------------------------------------------------------------------------
    
    def runTest(frame, nb, log):
        win = TestRadioBox(nb, log)
        return win
    
    
    
    overview = """\
    A RadioBox is used to select one of a number of mutually exclusive
    choices.  It is displayed as a vertical column or horizontal row of
    labelled buttons, surrounded by a box that can optionally have a 
    label.
    
    """
    
    
    if __name__ == '__main__':
        import sys,os
        import run
        run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
    

    【讨论】:

    • 谢谢史蒂夫,我想要单选按钮的类似功能,而不是复选框。
    • 这与我需要的很接近。列表可以垂直显示而不是水平显示吗?
    • 只需将上面示例中的列数 2/3 更改为 1。
    • 还有一个疑问,一旦我的列表更新,单选框就会被覆盖,我怀疑面板上的前一个框没有被清除(正在选择多个选项)。如何在面板上更新之前清除它?
    • 如果您要创建一个新框,您需要使用 Destroy 删除旧框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2011-11-29
    • 2013-09-29
    • 2013-07-05
    • 2017-07-16
    • 2013-11-17
    • 2015-07-03
    相关资源
    最近更新 更多