我一直在尝试制作一些允许我在一行中有多个句子的东西。 代码是:
import wx
app = wx.PySimpleApp()
class MyDialog(wx.Frame):
"""
This is my dialog in which I have my interface.
"""
def __init__(self):
"""
This stores all my variables.
"""
wx.Frame.__init__(self, None, -1, "Edit Action", size=(400, 300))
self.my_mini_panels = []
self.my_mini_hboxes = []
self.my_mini_vboxes = []
self.main_vbox = wx.BoxSizer(wx.VERTICAL)
self.main_hbox = wx.BoxSizer(wx.HORIZONTAL)
self.my_mini_panels.append(wx.Panel(self, -1, style=wx.SIMPLE_BORDER,
size=(400, 20)))
self.my_mini_hboxes.append(wx.BoxSizer(wx.HORIZONTAL))
self.my_mini_vboxes.append(wx.BoxSizer(wx.VERTICAL))
self.my_mini_hboxes[0].AddMany((wx.StaticText(self.my_mini_panels[0],
-1, 'Here it is... '),
wx.StaticText(self.my_mini_panels[0],
-1, 'There it was.')))
self.my_mini_panels.append(wx.Panel(self, -1, style=wx.SIMPLE_BORDER,
size=(400, 20)))
self.my_mini_hboxes.append(wx.BoxSizer(wx.HORIZONTAL))
self.my_mini_vboxes.append(wx.BoxSizer(wx.VERTICAL))
self.my_mini_hboxes[1].AddMany((wx.StaticText(self.my_mini_panels[1],
-1, 'Hello, '),
wx.StaticText(self.my_mini_panels[1],
-1, 'Goodbye!')))
for i, hbox in enumerate(self.my_mini_hboxes):
hbox.Add(self.my_mini_vboxes[i])
self.main_vbox.AddMany(tuple(self.my_mini_hboxes))
self.main_hbox.Add(self.main_vbox)
self.SetSizer(self.main_hbox)
if __name__ == '__main__':
dialog = MyDialog()
dialog.Show(True)
app.MainLoop()
它似乎不起作用。我希望它看起来像这样:
我做错了什么?
也许我应该说明静态文本对象必须是分开的。我不能只用一个更大的段替换一行上的两段文本。
答案 0 :(得分:1)
您不需要大量的大小调整器和面板。您可以使用一个面板+一个sizer +两个静态文本小部件。这是代码:
import wx
class MyDialog(wx.Frame):
"""
This is my dialog in which I have my interface.
"""
def __init__(self):
"""
This stores all my variables.
"""
wx.Frame.__init__(self, None, -1, "Edit Action", size=(400, 300))
panel = wx.Panel(self)
main_vbox = wx.BoxSizer(wx.VERTICAL)
label_one = wx.StaticText(panel, label="Here it is... There it was.")
label_two = wx.StaticText(panel, label="Hello, Goodbye!")
main_vbox.Add(label_one, 0, wx.ALL, 5)
main_vbox.Add(label_two, 0, wx.ALL, 5)
panel.SetSizer(main_vbox)
if __name__ == '__main__':
app = wx.App(False)
dialog = MyDialog()
dialog.Show(True)
app.MainLoop()
另请注意,我将您的app对象从wx.PySimpleApp更改为wx.App。 wx.PySimpleApp已被弃用,建议从现在开始使用wx.App。
你可能会考虑从wx.Dialog而不是wx.Frame进行子类化,因为如果这真的应该是一个对话框会更有意义。