0
import wx
app=wx.App()
dc=wx.ScreenDC()
dc.DrawLine(100,100,500,500)
dc.Clear()
我只是在屏幕上畫畫,而不是創建框架和畫框。如何在wxpython中清除屏幕上的圖形?
該行出現,但dc.Clear()
沒有影響。而我找不到Refresh()
直流。
請告訴我如何清除該行?
import wx
app=wx.App()
dc=wx.ScreenDC()
dc.DrawLine(100,100,500,500)
dc.Clear()
我只是在屏幕上畫畫,而不是創建框架和畫框。如何在wxpython中清除屏幕上的圖形?
該行出現,但dc.Clear()
沒有影響。而我找不到Refresh()
直流。
請告訴我如何清除該行?
首先,閱讀本手冊: http://wiki.wxpython.org/Getting%20Started
東西沿着線:
import wx
app=wx.App()
dc=wx.ScreenDC()
panel = wx.Panel(self)
dc.DrawLine(100,100,500,500)
dc.Clear()
# and then
dc.Refresh()
app.MainLoop()
clear()
只有 「刪除」 從下一個項目渲染批次。 這不是直到調用Refresh()
這些指令被髮送到渲染內存(非技術術語..因爲這不是它的事情下了訂單,但它是怎麼回事了一個例證)
還有一個功能稱爲RefreshRect()
,它只刷新屏幕上的給定區域,爲更大的應用程序提供更快的渲染時間。 兩者都很好。
主要是因爲你通常在WX另一個對象中創建對象,我真的不想這麼WX語法,但試試這個:
import wx
class DrawPanel(wx.Frame):
"""Draw a line to a panel."""
def __init__(self):
wx.Frame.__init__(self, title="Draw on Panel")
self.Bind(wx.EVT_PAINT, self.OnPaint)
def OnPaint(self, event=None):
dc = wx.PaintDC(self)
dc.Clear()
dc.SetPen(wx.Pen(wx.BLACK, 4))
dc.DrawLine(0, 0, 50, 50)
app = wx.App(False)
frame = DrawPanel()
frame.Show()
app.MainLoop()
DC沒有刷新() – user2354526 2013-05-06 12:32:40
@ user2354526現在當你第二次提到它時,主應用程序沒有'Refresh()',因爲這是一個清除它內部東西的對象函數。創建一個畫布,或在我的第二個示例中創建一個框架,作爲您在其中執行的操作的佔位符。你通常這樣做(創建一個包裝所有東西的wx.Frame)。 – Torxed 2013-05-06 12:39:12
謝謝!我只是在屏幕上畫畫,而不是創建框架並在其上繪製 – user2354526 2013-05-06 12:42:01