Лучший холст для WxPython
Я программист на Java, работаю над проектом на Python и последней версией WxPython. В Java Swing вы можете рисовать на элементах JPanel, переопределяя их метод рисования.
Я ищу подобный класс в WxPython для приложения с графическим интерфейсом.
Я видел этот вопрос здесь:
Лучший холст для рисования в wxPython?
но тот факт, что проекты не обновляются, меня беспокоит.
Три года спустя, есть ли что-то еще, что я должен рассмотреть, кроме FloatCanvas или OGL?
Конечный вариант использования я рисую звуковые волны с разной степенью увеличения.
1 ответ
Решение
Просто используйте wx.Panel
,
Вот некоторая документация по функциям контекста рисования:
http://docs.wxwidgets.org/stable/wx_wxdc.html
http://www.wxpython.org/docs/api/wx.DC-class.html
import wx
class View(wx.Panel):
def __init__(self, parent):
super(View, self).__init__(parent)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.Bind(wx.EVT_SIZE, self.on_size)
self.Bind(wx.EVT_PAINT, self.on_paint)
def on_size(self, event):
event.Skip()
self.Refresh()
def on_paint(self, event):
w, h = self.GetClientSize()
dc = wx.AutoBufferedPaintDC(self)
dc.Clear()
dc.DrawLine(0, 0, w, h)
dc.SetPen(wx.Pen(wx.BLACK, 5))
dc.DrawCircle(w / 2, h / 2, 100)
class Frame(wx.Frame):
def __init__(self):
super(Frame, self).__init__(None)
self.SetTitle('My Title')
self.SetClientSize((500, 500))
self.Center()
self.view = View(self)
def main():
app = wx.App(False)
frame = Frame()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()