如何抛光/完善wxPython TextCtrls的定位和外观?

时间:2013-01-14 17:52:09

标签: python wxpython wxwidgets

我对wxPython有一些纯粹的美容问题。例如,标签与它们所代表的控件之间的关系 - 一切看起来总是至少比目标高2-3个像素,有时甚至更糟。在我正在创建的对话框中,我已将文本控件的字体更改为Consolas,并将它们放在带有wx.EXPAND的sizer中。首先,一旦我更改了字体,文本控件中的文本就会向上倾斜几个像素,大概是因为字体是一个或两个像素,当我设置wx.EXPAND时,文本控件增长了几个像素高度,使倾斜更严重。以下是扩展标志之前和之后的一些屏幕截图:

enter image description here

enter image description here

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

假设我想将文本控件的高度减少几个像素,并将文本内容微调几个像素 - 执行此类挑剔调整的最有效方法是什么?


Here is the code for the dialog.

3 个答案:

答案 0 :(得分:3)

你应该单独留下文本控件的高度(即既不硬编码也不使用wxEXPAND)并简单地使用wxALIGN_VERTICAL(正如你已经做的那样,但它会被{{1}覆盖})正确对齐控件。

如果您希望文本控件仅在水平方向上展开,则应通过将其放在wxEXPAND内以标准方式进行。

答案 1 :(得分:0)

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

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

[我不太了解python - 你应该能够把它转换成好的python]

答案 2 :(得分:0)

grid sizer中的

wx.EXPAND向两个方向展开。您将需要嵌套的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 mailing list