4

wxPython で純粋に表面的な問題が発生しています。たとえば、ラベルとラベルが表すコントロールとの関係 - すべてが常に目標から少なくとも 2 ~ 3 ピクセルずれているように見え、場合によってはさらに悪化することもあります。現在作成しているダイアログで、テキスト コントロールのフォントを Consolas に変更し、wx.EXPAND. まず第一に、フォントを変更すると、おそらくフォントが 1 ピクセルか 2 ピクセル小さいため、テキスト コントロール内のテキストが数ピクセル上に傾いてしまい、テキスト コントロールを設定wx.EXPANDすると、高さが数ピクセル大きくなり、傾きが生じます。さらに悪い。以下はそれぞれ、展開フラグの前後のスクリーンショットです。

ここに画像の説明を入力

ここに画像の説明を入力

OCDの完璧主義者として、これは私にとってかなり大きな問題です. Google、Wiki、または API を使用して、テキスト コントロール内のテキストの位置に影響を与える方法が見つかりません。

テキスト コントロールの高さを数ピクセル減らし、テキスト コンテンツを数ピクセル下に移動したいとします。このような細かい調整を行う最も効率的な方法は何でしょうか?


ダイアログのコードは次のとおりです。

4

3 に答える 3

3

テキスト コントロールの高さはそのままにして (つまり、ハード コードも使用もせずwxEXPAND)、単純にwxALIGN_VERTICAL(既に行っているように、 によってオーバーライドされますwxEXPAND) を使用して、コントロールを適切に配置する必要があります。

テキスト コントロールを水平方向にのみ展開する場合は、wxBoxSizer.

于 2013-01-15T01:03:06.160 に答える
0

wx.EXPANDグリッドサイザーでは、両方向に拡張されます。この動作をオーバーライドするには、ネストされたボックスサイザーが必要です。

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 に答える