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