質問

仕事をしているwx.Pythonとしていただきたいと思いるカラムのwx.ListCtrlへの自動リサイズするする最小の幅カラム名などの広さで、幅広い要素またはその列の名前です。最初に思ったのListCtrlAutoWidthMixinうことがないように見えるっていってください正しい場合が築いということが!!!)

たいのですがどのように広いのデータ要素のマイリストが描画されます?

役に立ちましたか?

解決

はい、あなたはwx.ListCtrlを自分でこれを行う必要がありますし、私は正しい行いやすい(またはエレガント)になるか分からない。

ここにあなたが軌道に乗るための小さな例であり、wx.Gridの使用を検討します:

import wx, wx.grid

class GridData(wx.grid.PyGridTableBase):
    _cols = "This is a long column name,b,c".split(",")
    _data = [
        "1 2 3".split(),
        "4,5,And here is a long cell value".split(","),
        "7 8 9".split()
    ]

    def GetColLabelValue(self, col):
        return self._cols[col]

    def GetNumberRows(self):
        return len(self._data)

    def GetNumberCols(self):
        return len(self._cols)

    def GetValue(self, row, col):
        return self._data[row][col]


class Test(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        grid = wx.grid.Grid(self)
        grid.SetTable(GridData())
        grid.EnableEditing(False)
        grid.SetSelectionMode(wx.grid.Grid.SelectRows)
        grid.SetRowLabelSize(0)
        grid.AutoSizeColumns()


app = wx.PySimpleApp()
app.TopWindow = Test()
app.TopWindow.Show()
app.MainLoop()

他のヒント

jakeparsのほかには答え:これはヘッダが大きいかどうか、確認する、または列の中で最もスペースを取るアイテム必要があります。ないエレガントしかし、作業に...

import wx

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

        self.list = wx.ListCtrl(self, style=wx.LC_REPORT)
        items = ['A', 'b', 'something really REALLY long']
        self.list.InsertColumn(0, "AAAAAAAAAAAAAAAAAAAAAAAA")
        for item in items:
            self.list.InsertStringItem(0, item)
        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
        a = self.list.GetColumnWidth(0)
        print "a " + str(a)
        self.list.SetColumnWidth(0,wx.LIST_AUTOSIZE_USEHEADER)
        b = self.list.GetColumnWidth(0)
        print "b " + str(b)
        if a>b:
            print "a is bigger"
            self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
app = wx.App(False)
frm = Frame(None, title="ListCtrl test")
frm.Show()
app.MainLoop()

バイスだけで身につけく頭痛に関連wx.ListCtrlるべきスイッチを使用 ObjectListView (良cookbookフォーラムのためのコードではない。至れり尽くせりとしてしまいがちなので、使するものである、ということを非常に基本的なListCtrlでは非常にパワフルで柔軟性に富んだやすいコードです。こちらの のwxPyWikiページ 関係しています(例コードとします。の開発に用いるソフトウェアのwxPythonメーリングリストで通知メールが送受信できるとの質問をします。

これは私のために動作します。

import wx

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

        self.list = wx.ListCtrl(self, style=wx.LC_REPORT)
        items = ['A', 'b', 'something really REALLY long']
        self.list.InsertColumn(0, "AA")
        for item in items:
            self.list.InsertStringItem(0, item)
        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)

app = wx.App(False)
frm = Frame(None, title="ListCtrl test")
frm.Show()
app.MainLoop()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top