2016-12-17 4 views
0

Как программно выбирать/проверять RadioButton wxPython? Или иначе, как я могу определить выбор по умолчанию в группе переключателей?Как программно выбрать wxPython RadioButton

baud_boxsizer = wx.BoxSizer(wx.HORIZONTAL) 
baud_boxsizer.Add(wx.RadioButton(panel, label="9600", style=wx.RB_GROUP)) 
baud_boxsizer.Add(wx.RadioButton(panel, label="57600")) 
... 

RadioButton API, кажется, не предлагают такую ​​функцию и радиокнопку группа является своего рода «виртуальный», потому что она существует только в графическом интерфейсе.

Я знаю, что могу использовать RadioBox, но я не знаю, как его стилизовать, чтобы он не выглядел, как RadioBox (нужен только горизонтальный ряд переключателей).

+2

Быстрое прочтение сети показывает, что [ 'SetValue'] (https://wxpython.org/ Phoenix/docs/html/wx.RadioButton.html # wx.RadioButton.SetValue) должен быть в состоянии это сделать. –

+0

Работает, спасибо. Теперь я узнал, что смотреть на документы [wxPython Phoenix docs] (https://wxpython.org/Phoenix/docs/html/wx.RadioButton.html#wx.RadioButton.SetValue) действительно полезно - даже если я не использую версия Phoenix. Документы [2.8.x API] (https://www.wxpython.org/docs/api/wx.RadioButton-class.html#SetValue) абсолютно бесполезны в этом отношении. Я также утверждаю, что «SetValue» - ужасное имя для метода, который проверяет/отменяет контроль GUI. –

ответ

1

Просто так, что есть закодированный ответ на будущее, а не просто комментарий:

import wx 

class MyFrame(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, -1, "My Frame", size=(600, 300)) 
     self.panel = wx.Panel(self,-1) 
     #self.panel.Bind(wx.EVT_MOTION, self.OnMove) 
     my_boxsizer = wx.BoxSizer(wx.HORIZONTAL) 
     my_apple = wx.RadioButton(self.panel, -1, "Apple") 
     my_mango = wx.RadioButton(self.panel, -1, "Mango") 
     my_banana = wx.RadioButton(self.panel, -1, "Banana") 
     my_orange = wx.CheckBox(self.panel, -1, "Orange", (20,250), (160,-1)) 
     my_boxsizer.Add(my_apple, 0, wx.ALL|wx.EXPAND, 5) 
     my_boxsizer.Add(my_mango, 0, wx.ALL|wx.EXPAND, 5) 
     my_boxsizer.Add(my_banana, 0, wx.ALL|wx.EXPAND, 5) 
     my_boxsizer.Add(my_orange, 0, wx.ALL|wx.EXPAND, 5) 
     self.panel.SetSizer(my_boxsizer) 
     my_banana.SetValue(True) 
     my_orange.SetValue(True) 
     self.Show() 


app = wx.App() 
frame = MyFrame() 
app.MainLoop() 
+0

Мы уже установили, что это правильный ответ, как вы отметили, но в любом случае спасибо. Принято. –

Смежные вопросы