4

我在使用 wxPython 时遇到了一些纯粹的外观问题。例如,标签和它们所代表的控件之间的关系——一切似乎总是偏离目标至少 2-3 像素,有时甚至更糟。在我当前正在创建的对话中,我已将文本控件的字体更改为 Consolas,并将它们放入带有wx.EXPAND. 首先,一旦我更改了字体,文本控件中的文本就会向上倾斜几个像素,大概是因为字体小了一到两个像素,而当我设置wx.EXPAND文本控件的高度增加了几个像素,使得倾斜更糟。下面分别是展开标志前后的一些截图:

在此处输入图像描述

在此处输入图像描述

作为强迫症的完美主义者,这对我来说是一个很大的问题。我无法通过 Google、Wiki 或 API 找到任何方法来影响文本控件中文本的位置。

假设我想将文本控件的高度降低几个像素并将其文本内容向下微调几个像素 - 执行这种挑剔调整的最有效方法是什么?


这是对话框的代码。

4

3 回答 3

3

您应该单独保留文本控件的高度(即既不对其进行硬编码也不使用wxEXPAND)并简单地使用wxALIGN_VERTICAL(正如您已经这样做,但它被 覆盖wxEXPAND)来正确对齐控件。

如果您希望文本控件仅在水平方向扩展,您应该以标准方式将其放入wxBoxSizer.

于 2013-01-15T01:03:06.160 回答
0

wx.EXPAND在 grid sizer 中向两个方向扩展。您将需要嵌套的 box sizer 来覆盖此行为。

import wx

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)

        self.label = wx.StaticText(self.panel, label="Label")
        self.text = wx.TextCtrl(self.panel)
        self.button = wx.Button(self.panel, label="+", size=(50, 50))


        self.sizer = wx.GridBagSizer(5, 5)
        self.nested = wx.BoxSizer()
        self.sizer.Add(self.label, (0, 0), flag=wx.ALIGN_CENTER_VERTICAL)
        self.sizer.Add(self.nested, (0, 1), flag=wx.EXPAND)
        self.nested.Add(self.text, proportion=1, flag=wx.ALIGN_CENTER)
        self.sizer.Add(self.button, (0, 2))
        self.sizer.AddGrowableCol(1)

        self.panel.SetSizerAndFit(self.sizer)  
        self.Show()


app = wx.App(False)
win = MainWindow(None)
app.MainLoop()

更多信息在wxPython 邮件列表中

于 2013-01-15T14:04:50.857 回答
0

创建文本控件时,不需要接受默认高度。你可以坚持高度是你想要的。如果您将其他尺寸保留为默认值( -1 ),那么尺寸测量器将为您处理这些东西,但尊重您对高度的决定。

tc = wx.TextCtrl(parent, -1, "", 
     wxPoint(-1,-1), wxSize(-1,my_preferred_height_in_pixels))

[我不太了解python-您应该能够将其转换为好的python]

于 2013-01-14T18:30:58.700 回答