IM使用wxPython的這樣做了一點漆應用:wxPython的繪圖窗口會導致消息對話框崩潰
from wx import *
class Canvas(ScrolledWindow):
def __init__(self, parent):
ScrolledWindow.__init__(self, parent, ID_ANY,(0, 0), size=DefaultSize, style=wx.SUNKEN_BORDER)
self.SetBackgroundColour('#666666')
self.sizer = BoxSizer()
self.EnableScrolling(True,True)
self.window = Window(self, size=(200,200))
self.window.SetBackgroundColour('#ffffff')
self.sizer.Add(self.window)
self.SetSizer(self.sizer)
self.SetVirtualSize((1000,1000))
self.SetScrollRate(1, 1)
self.Bind(EVT_PAINT, self.OnPaint)
def OnPaint(self, e):
dc = PaintDC(self.window)
dc.BeginDrawing()
dc.DrawLine(0,0, 100, 100)
dc.EndDrawing()
class Paint(Frame):
def __init__(self, parent, title):
Fraself.__init__(self, parent, title=title, size=(500,400), style= CAPTION | RESIZE_BORDER | CLOSE_BOX)
self.CreateStatusBar(2,style= STB_DEFAULT_STYLE & ~(STB_SIZEGRIP))
self.canvas = Canvas(self)
self.Show(True)
menu= Menu()
test = menu.Append(ID_ANY, "Create","Shows a MessageDialog")
self.Bind(EVT_MENU, self.Test, test)
menubar = MenuBar()
menubar.Append(menu,"Dialog")
self.SetMenuBar(menubar)
def Test(self, e):
dial = wx.MessageDialog(None, 'This is a test dialog.', 'Hi',
wx.OK)
dial.Show()
app = App(False)
frame = Paint(None, 'Paintbox')
app.MainLoop()
,但有與MessageDialog一些奇怪的問題,即由於我使用的是我不能表現出來PaintDC中的其他地方。如果我註釋掉線self.Bind(EVT_PAINT, self.OnPaint)
我可以獲得對話框顯示,但是如果我也繪畫,對話框將崩潰程序而不打印任何錯誤輸出。我正在使用wxpython 3.0,python 2.7和Windows 8.
其他類型的對話框(對話框,FileDialog)我可以顯示沒有錯誤。