我对wxPython有一些纯粹的美容问题。例如,标签与它们所代表的控件之间的关系 - 一切看起来总是至少比目标高2-3个像素,有时甚至更糟。在我正在创建的对话框中,我已将文本控件的字体更改为Consolas,并将它们放在带有wx.EXPAND
的sizer中。首先,一旦我更改了字体,文本控件中的文本就会向上倾斜几个像素,大概是因为字体是一个或两个像素,当我设置wx.EXPAND
时,文本控件增长了几个像素高度,使倾斜更严重。以下是扩展标志之前和之后的一些屏幕截图:
作为强迫症的完美主义者,对我来说这是一个非常大的问题。我无法通过Google,Wiki或API找到影响文本控件中文本位置的任何方法。
假设我想将文本控件的高度减少几个像素,并将文本内容微调几个像素 - 执行此类挑剔调整的最有效方法是什么?
答案 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)
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 。