【问题标题】:Trouble with Box Sizers in WxPythonWxPython 中的 Box Sizer 问题
【发布时间】:2013-12-03 07:52:23
【问题描述】:

我一直在尝试制作一些可以让我在一行中有多个句子的东西。 代码是:

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()

它似乎不起作用。我希望它看起来像这样:

我做错了什么?

编辑

也许我应该明确指出静态文本对象必须是分开的。我不能只用一个更大的段替换一行上的两个文本段。

【问题讨论】:

    标签: python-2.7 wxpython


    【解决方案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()
    

    还请注意,我将您的应用程序对象从 wx.PySimpleApp 更改为 wx.App。 wx.PySimpleApp 已弃用,建议从现在开始使用 wx.App。

    您可能会考虑从 wx.Dialog 而不是 wx.Frame 子类化,因为如果这真的应该是一个对话框,那将更有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2013-08-01
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多