回答
使用幀的繪圖上下文 wxWindow子類(框架/面板/等等......實際上幾乎任何wxObject)。
一種方式是這樣的
import wx
class MyCustomFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id)
self.Bind(wx.EVT_PAINT,self.OnPaint)
def OnPaint(self,evt):
self.dc = dc = wx.PaintDC(self)
p1 = [0,0]
p2 = [500,0]
for i in range(100):
dc.DrawLine(p1[0],p1[1],p2[0],p2[1])
p1 = [p1[0],p1[1]+5]
p2 = [p2[0],p2[1]+5]
p1=[0,0]
p2 = [0,500]
for i in range(100):
dc.DrawLine(p1[0],p1[1],p2[0],p2[1])
p1 = [p1[0]+5,p1[1]]
p2 = [p2[0]+5,p2[1]]
if __name__ == "__main__":
a = wx.App(redirect=False)
f = MyCustomFrame(None,-1)
#f.OnPaint(None) --- dont do this!!!
f.Show()
a.MainLDop()
您可以通過使用drawlines加快步伐,而不是
def OnPaint(self,evt):
self.dc = dc = wx.PaintDC(self)
verticle_lines = [(i*5,0,i*5,500) for i in range(100)]
horizontal_lines = [(0,i*5,500,i*5) for i in range(100)]
dc.DrawLineList(horizontal_lines+verticle_lines)
爲了做你想做的與電網分級機,你可以做到這一點
import wx
class MyCustomPanel(wx.Panel):
def __init__(self,parent,id):
wx.Panel.__init__(self,parent,id)
self.sz = wx.GridSizer(5,5,0,0)
for i in range(25):
self.sz.Add(wx.StaticText(self,-1,str(i)))
self.SetSizer(self.sz)
self.Bind(wx.EVT_PAINT,self.OnPaint)
def OnPaint(self,evt):
self.dc = dc = wx.PaintDC(self)
w,h = self.sz.GetSize()
nr = self.sz.GetRows()
nc = self.sz.GetCols()
cell_w = float(w)/nc
cell_h = float(h)/nr
hlines = [(0,i*cell_h,w,i*cell_h)for i in range(nr+1)]
vlines = [(i*cell_w,0,i*cell_w,h)for i in range(nc+1)]
self.dc.DrawLineList(hlines+vlines)
if __name__ == "__main__":
a = wx.App(redirect=False)
f1 = wx.Frame(None,-1)
f = MyCustomPanel(f1,-1)
#f.OnPaint(None)
f1.Show()
a.MainLoop()
你也可以用這樣的風格完成這個
import wx
class SimplePanel(wx.Panel):
def __init__(self,parent,id,str_val):
wx.Panel.__init__(self,parent,id,style=wx.SIMPLE_BORDER)
self.sz = wx.BoxSizer()
self.sz.Add(wx.StaticText(self,-1,str_val),0,wx.ALIGN_CENTER)
self.SetSizer(self.sz)
class MyCustomPanel(wx.Panel):
def __init__(self,parent,id):
wx.Panel.__init__(self,parent,id)
self.sz = wx.GridSizer(5,5,0,0)
for i in range(25):
self.sz.Add(SimplePanel(self,-1,str(i)),0,wx.GROW)
self.SetSizer(self.sz)
if __name__ == "__main__":
a = wx.App(redirect=False)
f1 = wx.Frame(None,-1)
f = MyCustomPanel(f1,-1)
#f.OnPaint(None)
f1.Show()
a.MainLoop()
噢,很好,你知道如何使它與GridSizer或GridBagSizer一起工作來分離小部件嗎? (如按鈕) – user1513192 2012-07-20 02:43:55
或我怎樣才能覆蓋GridSizer? – user1513192 2012-07-20 02:50:35
使用一個面板而不是一個框架,並給它使用SetMinSize((w,h))給它的尺寸一個sizer會識別..哦,我看到你的問題...這將需要一段時間來回答... – 2012-07-20 02:55:29
- 1. wxpython如何重新創建網格?
- 2. 如何創建一個「網格」滴管?
- 3. 在wx Erlang中創建一個網格
- 4. 如何創建在wxPython中多行wx.ComboCtrl?
- 5. 如何銷燬網格並創建一個新網格
- 6. 如何在pygame中創建一個網格
- 7. 在wxpython中嵌入網格
- 8. 如何在scenekit中創建3D網格
- 9. 如何在Android中創建10x10網格?
- 10. 在創建一個WinForms網格
- 11. 在循環中創建多個幀wxPython
- 12. WxPython多個網格實例
- 13. 在wxPython中創建ScrolledWindow
- 14. 我如何從多個網格中創建一架飛機?
- 15. 如何創建網格
- 16. 如何在ag網格中創建子網格?
- 17. 在dojo中創建多個網格
- 18. 如何在Tkinter中創建一個20x20的網格網格,然後更改特定網格的顏色
- 19. 在Python中創建網格
- 20. Ui網格:我如何動態創建多個UI網格
- 21. 如何用SVG圖標創建一個wxPython按鈕?
- 22. wxPython:如何創建一個bash shell窗口?
- 23. 在kendo ui網格中創建一個空白的第一列
- 24. 如何在網格下創建按鈕?
- 25. 在ExtJs中創建一個具有兩個比例的網格
- 26. 如何在另一個表格列中創建表格?
- 27. 如何在SQL中的兩個表中創建一個表格
- 28. 用UIPageViewController創建一個網格/地圖
- 29. 創建一個簡單的CSS網格
- 30. 創建一個靜態網格視圖
你只是想抽出一個網格,或者創建一個小部件網格? – 2012-07-20 17:21:05