0

Tkinter でオプション メニューのリストを作成しようとしています。アイデアは、長さが変化する可能性のあるデータに従ってメニューが作成されるため、オプションメニューの動的リストを作成する必要があるということです。私が作業している最終的なコードではなく、状況に関する簡単な例があります。問題は、StringVars の配列を作成して、各行に個別の値を持たせることに成功していないことです。例では、変数はすべての行で共通です。これは、StringVars のリストでエラーが発生しないようなバージョンを実行できなかったためです。

次に例を示します。

from Tkinter import *

list1 = ['001 aaa', '002 bbb', '003 ccc']

status = ["On", "Off", "Unknown"]

testset1 = []
master = Tk()
variable = StringVar(master)

r = 0
for x in list1:
    x = x.split(" ", 2)
    Label(text=x[0], relief=RIDGE, anchor=W).grid(row=r, column=0, sticky=W+E)
    Label(text=x[1], relief=RIDGE, anchor=W).grid(row=r, column=1, sticky=W+E)
    apply(OptionMenu, (master, variable) + tuple(status)).grid(row=r, column=2, sticky=W+E)
    r += 1

mainloop()
4

1 に答える 1

1

これは、リスト内包表記を使用したソリューションです。補助関数内で OptionMenu を作成し、使用する変数を返すだけです。

from Tkinter import *

list1 = ['001 aaa', '002 bbb', '003 ccc']
status = ["On", "Off", "Unknown"]
master = Tk()

def create_option(r, x):
    x = x.split(" ", 2)
    variable = StringVar(master)
    Label(master, text=x[0], relief=RIDGE, anchor=W).grid(row=r, column=0, sticky=W+E)
    Label(master, text=x[1], relief=RIDGE, anchor=W).grid(row=r, column=1, sticky=W+E)
    OptionMenu(master, variable, *status).grid(row=r, column=2, sticky=W+E)
    return variable

variables = [create_option(r,x) for r, x in enumerate(list1)]
root.mainloop()
于 2013-06-02T20:07:56.670 に答える