【发布时间】:2013-05-11 18:16:09
【问题描述】:
我在这里重现了错误;
import wx
import debug
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Test")
self.SetSize((600,500))
vbox = wx.BoxSizer(wx.VERTICAL)
toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL | wx.NO_BORDER)
toolbar.Realize()
vbox.Add(toolbar, 0, border=5)
app = wx.App(0)
frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
现在无论我在哪里添加此行以添加文本控件;
self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
它出现在工具栏上方。我阅读了文档并遵循了一些教程,但我仍然无法完全掌握这个概念。我怎样才能实现我想要的?我希望文本控件出现在工具栏下方并适合剩余空间。
【问题讨论】:
-
我相信您在这里遗漏了导致问题的关键代码行。请发布演示问题的示例,而不是(或除此之外)发布不同的代码,然后尝试描述导致问题的更改。
-
但我有一个猜测:您没有将
TextCtrl添加到BoxSizer,而是将其直接添加到Frame。BoxSizer的全部意义在于自动布置其子小部件,因此您只需添加另一个控件,它就会出现在前一个控件的下方,这听起来正是您想要的。 -
@abarnert 这个精确的代码显示了问题,文本控件将自身放置在工具栏上。你得到不同的输出吗?实际代码有点长,大多数变量和函数名称都是土耳其语。如果你愿意,我可以放一个 pastebin 链接。对于第二条评论,我试过了,但什么也没发生,但我会再做一次。