我刚刚写了一个小代码,它应该在ScrolledPanel中放入一些TextCtrl…如果你将变量单词的范围保持在1440以下,那么这个代码就可以工作,如果你放入更多,那么布局就像面板会互相堆叠…如果它们堆叠起来,然后你按下add widget按钮,一切都会恢复正常的…我不明白这种行为,有人能帮我点蜡烛吗?:页
<code># -*- coding: cp1252 -*-
import wx
import wx.lib.scrolledpanel as scrolled #Sinon ça ne marche pas...
class MyForm(wx.Frame):
#----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial", size=(200,500))
# Add a panel so it looks the correct on all platforms
self.panel = wx.Panel(self, wx.ID_ANY)
#Controls
self.scrolled_panel = scrolled.ScrolledPanel(self.panel, -1,
style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER, name="panel1")
self.scrolled_panel.SetupScrolling()
#Layout
#-- Scrolled Window
self.spSizer = wx.BoxSizer(wx.VERTICAL)
words=range(0,2000)# Works nice untill around 1430 then layout is incorrect...
for word in words:
text = wx.TextCtrl(self.scrolled_panel, value=str(word))
self.spSizer.Add(text)
self.scrolled_panel.SetSizer(self.spSizer)
self.spSizer.Fit(self.scrolled_panel)
#bouton
btn = wx.Button(self.panel, label="Add Widget")
btn.Bind(wx.EVT_BUTTON, self.onAdd)
#Panel
panelSizer = wx.BoxSizer(wx.VERTICAL)
panelSizer.AddSpacer(50)
panelSizer.Add(self.scrolled_panel, 1, wx.EXPAND)
panelSizer.Add(btn)
self.panel.SetSizer(panelSizer)
panelSizer.Fit(self.panel)
panelSizer.Layout()
# --------------------
# Scrolled panel stuff
self.scrolled_panel.SetAutoLayout(1)
#----------------------------------------------------------------------
def onAdd(self, event):
""""""
print "in onAdd"
new_text = wx.TextCtrl(self.scrolled_panel, value="New Text")
self.spSizer.Add(new_text)
self.scrolled_panel.Layout()
self.scrolled_panel.SetupScrolling()
event.Skip()
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm().Show()
app.MainLoop()
创建数千个文本控件确实不是一个好主意,您几乎肯定会遇到一些窗口(我会冒着风险假设这是您使用的,即使您不说)限制。最有可能的是windows坐标限制在32000左右,但是即使您可以避免这个限制,如果您创建了10000个GDI资源,您仍然会用完GDI资源。你知道吗
所以答案基本上是:不要这样做。您应该使用
wxListCtrl
、wxDataViewCtrl
或wxGrid
之类的工具来显示数据并允许按需编辑数据,即只在需要时创建一个单wxTextCtrl
。你知道吗相关问题 更多 >
编程相关推荐