wxPython控件间距

时间:2015-09-11 20:52:16

标签: python wxpython

我正在写一个初级的行程经理。只是一个简单的侧面项目,熟悉使用wxPython创建GUI。这是我的第一次尝试,我似乎无法在其他地方找到任何对此问题的引用。

我的代码如下:

import wx

class mainWindow(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(650, 1000))

        panel = wx.Panel(self)

        vbox = wx.BoxSizer(wx.VERTICAL)

        topLabel = wx.StaticText(panel, size = (-1, -1), label="Itinerary")

        vbox.Add(topLabel, 1, wx.EXPAND)

        self.listBox = wx.ListCtrl(panel, style = wx.LC_LIST)
        self.listBox.InsertColumn(0, "Test Column")
        self.listBox.Append(["This is an item"])
        self.listBox.Append(["This is another item"])

        vbox.Add(self.listBox, 1, wx.EXPAND | wx.ALL, 20)

        panel.SetSizer(vbox)

        self.Show(True)



app = wx.App(False)
frame = mainWindow(None, "Itinerary Manager")

app.MainLoop()

由于某种原因,这导致顶部的StaticText元素和它下面的ListCtrl之间存在巨大的差距。我尝试了一些解决方法,包括将每个的父级设置为self,但是它提供了相同的输出。我该怎么做才能确保这两个控件之间没有(或非常小)的边距?

1 个答案:

答案 0 :(得分:1)

问题是你告诉wx.StaticText控件扩展并占用应用程序宽度的一半。你不想要那个。因此,改变第13行:

vbox.Add(topLabel, 1, wx.EXPAND)

到此:

vbox.Add(topLabel, 0, wx.ALL, 5)

数字1告诉wxPython小部件应该占多大比例。由于静态文本和列表框都设置为1,因此它们各自占用的数量完全相同。大多数情况下,静态文本控件不应该扩展。无论如何,这里是完整的代码:

import wx

class mainWindow(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(650, 1000))

        panel = wx.Panel(self)

        vbox = wx.BoxSizer(wx.VERTICAL)

        topLabel = wx.StaticText(panel, size = (-1, -1), label="Itinerary")

        vbox.Add(topLabel, 0, wx.ALL, 5)

        self.listBox = wx.ListCtrl(panel, style = wx.LC_LIST)
        self.listBox.InsertColumn(0, "Test Column")
        self.listBox.Append(["This is an item"])
        self.listBox.Append(["This is another item"])

        vbox.Add(self.listBox, 1, wx.EXPAND | wx.ALL, 20)

        panel.SetSizer(vbox)

        self.Show(True)



app = wx.App(False)
frame = mainWindow(None, "Itinerary Manager")

app.MainLoop()