我第一次使用wxPython。我的要求是创建一个矩形框并在其中写入一些文本。我尝试实现相同但矩形框不会在Windows框架中渲染:
#!/usr/bin/env python
import wx
class Example(wx.Frame):
def __init__(self, *args, **kwargs):
super(Example, self).__init__(*args, **kwargs)
self.InitUI()
def InitUI(self):
self.SetTitle('BPSK')
self.Maximize(True)
self.Show(True)
dc = wx.WindowDC(self)
dc.DrawRectangle(10, 10, 200, 200)
def ShowMessage(self, message):
wx.MessageBox(message, 'Info',
wx.OK | wx.ICON_INFORMATION)
def main():
ex = wx.App()
Example(None)
ex.MainLoop()
if __name__ == '__main__':
main()
我不确定我做错了什么错?
答案 0 :(得分:0)
您的示例有几个问题:
虽然它确实有效(至少在wxPython 2.9.5.1/msw上),但它可能不是你想要的:
wx.WindowDC
整个wx.Frame
(而不是框架的内部)。您可以使用wx.ClientDC
仅绘制到内部(而不是标题栏和框架的图标)。但是,还会出现另一个问题:只要最小化帧,图形就会消失。
要缩短它,请参阅以下示例以获取wxPython wiki中正确绘制的最简单方法(意思是,触发一些绘图命令并正确地重新绘制/刷新)。
另一种方法是自己绘制位图(wx.Bitmap
+ wx.MemoryDC
+ wx.GraphicsContext
进行抗锯齿绘制)并使用wx.StaticBitmap
显示它。