Создание текстовых кнопок в wxPython - PullRequest
1 голос
/ 09 сентября 2011

В моем приложении я хочу создать кнопки за вычетом всей части кнопки. Как и при щелчке по URL, я полагаю, с некоторыми базовыми функциями, такими как незначительное изменение цвета или стиля при наведении / клике.

До сих пор я достиг этого с wx.StaticText, но моя проблема в том, чтобы получить событие левого щелчка, которое будет распознано. Вот соответствующий код:

self.text = wx.StaticText(self.background, -1, 'Text test')
self.text.Bind(wx.EVT_COMMAND_LEFT_CLICK, self.DoSomething)

Это просто никак не влияет. Есть идеи или альтернативы?

edit: Понял. Должен был позвонить wx.EVT_LEFT_UP.

1 Ответ

1 голос
/ 09 сентября 2011

PlateButtons (wx.lib.platebtn) предоставит вам большой контроль над кнопками, включая «плоскую» кнопку (без рамки), а также мышь для изменения цвета и т. Д. (Есть также style = wx.NO_BORDER для обычной кнопки, но это не надежно на Mac.)

В зависимости от того, что вы хотите сделать, возможно, лучше использовать кнопку, чем StaticText, поскольку существует множество проблем, таких как фокусировка, изменение размера, отключение, изменение изображения при нажатии и т. Д., Которые менее заметны, но все же ожидаемы и / или полезно в кнопках. Есть ряд примеров кода Python, который создает кнопки, в том числе PlateButtons и GenericButtons, где вы можете увидеть, что входит в создание хорошей кнопки. Это не невозможно, но хлопотно, если вам не нужно это делать.

...