Используя приведенный ниже код (сгенерированный с помощью wxglade
, протестированный с использованием wxPython 2.8.11.0, Python 2.7.1+, Ubuntu 11.04), я получаю следующий результат:
Даже если я удалил тексты с меток во время создания экземпляра, метка все еще отображается при нажатии кнопок! Как я могу удалить этот эффект; можно ли отключить только метку, оставив радиокнопки в целом активными? Я просто не хочу, чтобы что-либо еще отображалось кругом радиокнопок, независимо от того, выбрано оно или нет.
РЕДАКТИРОВАТЬ: только что обнаружил, что маленький прямоугольник, отображаемый кругом переключателя, по-видимому, предназначен для фокусировки; так что вопрос может быть: можно ли отключить индикацию фокусировки для переключателей, сохранив при этом все остальные функции?
EDIT2: дополнительный вопрос: как я могу сделать так, чтобы круги кнопок всегда были в центре их проставки? По-видимому, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL
не работает (попробуйте изменить размер окна, по горизонтали они все еще выравниваются по левому краю)
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Tue Jan 6 03:40:06 2015
import wx
# begin wxGlade: extracode
# end wxGlade
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.radio_btn_1 = wx.RadioButton(self, -1, "")
self.radio_btn_2 = wx.RadioButton(self, -1, "")
self.radio_btn_3 = wx.RadioButton(self, -1, "")
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("Test Radiobuttons")
self.SetSize((160, 100))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.Add(self.radio_btn_1, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
sizer_2.Add(self.radio_btn_2, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
sizer_2.Add(self.radio_btn_3, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade
# end of class MyFrame
if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, "")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()