私はPythonの初心者です。通常、プログラムにオプションメニューを追加したい場合は、次のようにします。
from Tkinter import*
root=Tk()
mylist=['a','b','c']
var=StringVar(root)
var.set("Select status")
mymenu=OptionMenu(root,var,*mylist)
mymenu.pack()
mymenu.config(font=('calibri',(10)),bg='white',width=12)
mymenu['menu'].config(font=('calibri',(10)),bg='white')
root.mainloop()
それは正常に動作しますが、各オプションメニューには7行のコードが必要になるため、同じ結果を達成するためのより短い方法があるかどうか疑問に思っています. いくつかのオプションメニューを作成する必要があるため、適切で短い方法を探しています。
EDIT:オプションメニューを生成する関数を作成するように誰かが指摘しました。だから私はこれを試しました、
from Tkinter import*
def Dropmenu(mylist,status):
var=StringVar(root)
var.set(status)
mymenu=OptionMenu(root,var,*mylist)
mymenu.pack(side=LEFT)
mymenu.config(font=('calibri',(10)),bg='white',width=12)
mymenu['menu'].config(font=('calibri',(10)),bg='white')
root=Tk()
Dropmenu(['a','b','c'],'Select')
root.mainloop()
しかし今、ユーザーが選択したすべての値を取得できるように、「var」に対処するにはどうすればよいですか? 私の例によると、すべてのオプション メニューは同じ「var」値を持つため、ユーザーが別のオプション メニューに対して行った選択を取得する方法がありません。
より明確にするために、2 つのオプション メニューがあるとします。
Dropmenu(['a','b','c'],'Select')
Dropmenu(['c','d','e'],'Select')
私が使用する場合
myvalue=var.get()
両方のオプション メニューに同じ var 名があるため、両方の値を取得するにはどうすればよいですか?