0

私はTkinterを初めて使用し、ファイルを開いてバイナリメッセージを解析するプログラムを作成しました。

結果を表示するのに最適な方法に苦労しています。私の解析クラスには300以上のエントリがあり、テーブルに似たものが必要です。

var1Label : var1Val

var2Label : var2Val

私はこれらのウィジェットをいじってみましたが、ラベル、テキスト、メッセージ、そしておそらく他のものなど、私が誇りに思うことができるものは何も得られていません。

したがって、ラベルを右揃えにし、Varを左揃えにするか、すべての「:」を揃えるなど、これを魅力的な表示にする方法についての良いアイデアになるようにします。Varのサイズは0〜15文字になります。

私はWindowsでPython2.7.2を使用しています。

これが私がダミー変数で試していたグリッドメソッドです

self.lbVar1 = Label(self.pnDetails1, text="Var Desc:", justify=RIGHT, bd=1)
self.lbVar1.grid(sticky=N+W)
self.sVar1 = StringVar( value = self.binaryParseClass.Var1 )
self.Var1  = Label(self.pnDetails1, textvariable=self.sVar1)
self.Var1.grid(row=0, column=1, sticky=N+E)
4

1 に答える 1

0

ttk.Treeviewウィジェットを使用すると、複数の列を持つオブジェクトのリストを作成できますそれはおそらくあなたにとって最も使いやすいものでしょう。

ラベルのグリッドについて具体的に質問したので、スクロール可能なグリッドで300個のアイテムを作成する方法を示す簡単で汚い例を次に示します。

import Tkinter as tk
class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        # create a canvas to act as a scrollable container for
        # the widgets
        self.container = tk.Canvas(self)
        self.vsb = tk.Scrollbar(self, orient="vertical", command=self.container.yview)
        self.container.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.container.pack(side="left", fill="both", expand=True)

        # the frame will contain the grid of labels and values
        self.frame = tk.Frame(self)
        self.container.create_window(0,0, anchor="nw", window=self.frame)

        self.vars = []
        for i in range(1,301):
            self.vars.append(tk.StringVar(value="This is the value for item %s" % i))
            label = tk.Label(self.frame, text="Item %s:" % i, width=12, anchor="e")
            value = tk.Label(self.frame, textvariable=self.vars[-1], anchor="w")
            label.grid(row=i, column=0, sticky="e")
            value.grid(row=i, column=1, sticky="ew")

        # have the second column expand to take any extra width
        self.frame.grid_columnconfigure(1, weight=1)

        # Let the display draw itself, the configure the scroll region
        # so that the scrollbars are the proper height
        self.update_idletasks()
        self.container.configure(scrollregion=self.container.bbox("all"))

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()
于 2012-09-26T14:52:26.913 に答える