0

レイアウトを設定するための設定がたくさんあることを理解しています。これはListCtrl、水平サイザー内の固定寸法です。

ここに画像の説明を入力してください

この絶対サイズは、残りのスペースを表示するか、列の数に応じて小さすぎます。

描画するためのレイアウトコマンドは何ListCtrlですか?

ListCtrl応答性を高めるにはどうすればよいですか。

  • サイズ変更を必要とせずに、多くの列のデータを一目で表示します
  • さまざまなGUIやサイズ変更で悪くなることはありません

リストをホストするパネルのコードリスト:

class CalcPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        self.lc = wx.ListCtrl(self, -1, size=(200,200), style=wx.LC_REPORT)
        self.lc.InsertColumn(0, 'State')
        self.lc.InsertColumn(1, 'Capital')
        #self.lc.SetColumnWidth(0, 140)
        #self.lc.SetColumnWidth(1, 153)
    #self.list_ctrl.Show()

        self.sizer = wx.BoxSizer(wx.HORIZONTAL)

        btn = wx.Button(self, label="Add Line")

        self.sizer.Add(btn)
        self.sizer.Add(self.lc, 1, wx.LEFT | wx.TOP | wx.GROW)
        self.SetSizer(self.sizer)
        self.Fit()

    def InitUI(self):
    pass
4

2 に答える 2

2

あなたは見ましたwx.lib.mixins.listctrl.ListCtrlAutoWidthMixinか?

から継承しwx.lib.mixins.listctrl.ListCtrlAutoWidthMixin、メソッドwx.ListCtrlでクラスを呼び出すと、最後の列はサイズ変更イベントで自動サイズ変更されます__init____init__

どの列の自動サイズ変更を変更することもできますsetResizeColumn

于 2012-06-18T11:20:59.097 に答える
0

質問を十分に読んでいなかったので、完全に間違った回答を提出しました。この間違いを補うために、私はいくつかの調査を行いました、そして私はうまくいく答えがあると思います。

wx.ListCtrl APIをチェックして、私はSetColumnWidth(self, col, width)あなたが望むことを正確に実行すると思うメソッドを見つけました。

あなたはあなたwx.ListCtrlが固定幅だと言いましたか?その場合...

lcWidth = 200
lcHeight = 200

self.lc = wx.ListCtrl(self, -1, size=(lcWidth,lcHeight), style=wx.LC_REPORT)
self.lc.InsertColumn(0, 'State')
self.lc.InsertColumn(1, 'Capital')

stateWidth = self.lc.GetColumnWidth(0)
self.lc.SetColumnWidth(1, (lcWidth - stateWdith))

wx.ListCtrlちなみに、固定サイズを維持したい場合はwx.GROW、通話からフラグを削除する必要がありますself.sizer.Add()wx.GROWアイテムのサイズを変更して、必要なスペースではなく、使用可能なすべてのスペースを埋めるようにします。

self.sizer.Add(self.lc, 1, wx.LEFT | wx.TOP)

wx.ListCtrlが固定幅でない場合は、wx.ListCtrlそれに応じてこのサイズ変更を処理するカスタムを宣言できます

class ResizingColListCtrl (wx.ListCtrl):
    def __init__(self, *args, **kwargs):
        wx.ListCtrl.__init__(self, *args, **kwargs)

        self.sizeColumns()

        self.Bind(EVT_SIZE, self.sizeColumns)

    def sizeColumns(event=None)
        width = self.GetSize()[0]
        numCols = self.GetColumnCount()

        for i in range(numCols):
             self.SetColumnWidth(i, width/numCols) #set your column width to whatever proportions you want

        if event:
            event.Skip() #since this is a wx.EVT_SIZE, this line is important

私の知る限り、wxPythonにはこの機能がネイティブにありません。

于 2012-06-17T01:32:28.047 に答える