Я хотел бы создать пользовательскую кнопку в wxPython. С чего начать, как мне это сделать?Как сделать пользовательские кнопки в wx?
5
A
ответ
8
Вот скелет, который вы можете использовать, чтобы сделать полностью пользовательскую кнопку, его до вашей фантазии, как она выглядит или ведет себя
class MyButton(wx.PyControl):
def __init__(self, parent, id, bmp, text, **kwargs):
wx.PyControl.__init__(self,parent, id, **kwargs)
self.Bind(wx.EVT_LEFT_DOWN, self._onMouseDown)
self.Bind(wx.EVT_LEFT_UP, self._onMouseUp)
self.Bind(wx.EVT_LEAVE_WINDOW, self._onMouseLeave)
self.Bind(wx.EVT_ENTER_WINDOW, self._onMouseEnter)
self.Bind(wx.EVT_ERASE_BACKGROUND,self._onEraseBackground)
self.Bind(wx.EVT_PAINT,self._onPaint)
self._mouseIn = self._mouseDown = False
def _onMouseEnter(self, event):
self._mouseIn = True
def _onMouseLeave(self, event):
self._mouseIn = False
def _onMouseDown(self, event):
self._mouseDown = True
def _onMouseUp(self, event):
self._mouseDown = False
self.sendButtonEvent()
def sendButtonEvent(self):
event = wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, self.GetId())
event.SetInt(0)
event.SetEventObject(self)
self.GetEventHandler().ProcessEvent(event)
def _onEraseBackground(self,event):
# reduce flicker
pass
def _onPaint(self, event):
dc = wx.BufferedPaintDC(self)
dc.SetFont(self.GetFont())
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
# draw whatever you want to draw
# draw glossy bitmaps e.g. dc.DrawBitmap
if self._mouseIn:
pass# on mouserover may be draw different bitmap
if self._mouseDown:
pass # draw different image text
3
Вы можете расширить класс кнопки по умолчанию, как это, например:
class RedButton(wx.Button):
def __init__(self, *a, **k):
wx.Button.__init__(self, *a, **k)
self.SetBackgroundColour('RED')
# more customization here
Каждый раз, когда вы поставите RedButton
в макет, он должен появиться красный (не проверял, хотя).
2
Попробуйте использовать Generic Button или Bitmap Button.
5
Когда я хотел узнать, как сделать пользовательских виджетов (кнопки включены) I ссылки Andrea Gavana's page (полный рабочий пример там) на platebutton в wxPyWiki и Коди Precord (в источник находится в wx.lib.platebtn, а также в SVN here) , Посмотрите на обоих из них, и вы должны иметь возможность создавать большинство пользовательских виджета, которые вам бы хотелось.
Смежные вопросы
- 1. Как сделать пользовательские кнопки в vb.net
- 2. Как сделать пользовательские кнопки по сторонам UITableViewCell?
- 3. Как сделать расстояние с wx Python BoxSizer
- 4. Сделать пользовательские кнопки навигации светятся при касании?
- 5. Как сделать пользовательские кнопки в формате html/css?
- 6. Как получить имя кнопки битмапа в wx python
- 7. Как сделать пользовательские фрагменты
- 8. Пользовательские кнопки в Android
- 9. Как сделать пользовательские кнопки/progressbar для VideoView или MediaController?
- 10. Пользовательские кнопки messageBox в VC++
- 11. Пользовательские кнопки треугольника Android
- 12. Как сделать пользовательские нарисованные кнопки на рабочем столе html5
- 13. Как добавить пользовательские кнопки в bootstrap-datetimepicker?
- 14. Пользовательские кнопки в C# WinForms
- 15. Пользовательские кнопки WPF
- 16. Пользовательские кнопки с быстрым
- 17. как сделать пользовательские домены
- 18. Как добавить пользовательские кнопки в UINavigationBar?
- 19. Добавить пользовательские кнопки в SlickGrid?
- 20. Пользовательские ячейки и кнопки
- 21. Wordpress пользовательские кнопки
- 22. iPhone пользовательские кнопки UINavigationBar
- 23. Как создать пользовательские кнопки в Visual Studio?
- 24. Пользовательские кнопки в JQuery мобильного
- 25. Оформление печатных пользовательские кнопки
- 26. JOptionPane как вызвать пользовательские кнопки
- 27. Пользовательские кнопки Outlook в ленте
- 28. Пользовательские кнопки DatePicker
- 29. это можно сделать пользовательские кнопки формы в прошивкой
- 30. Пользовательские кнопки Android
Большое спасибо за это! Я буду использовать его широко! – Mizmor