0

次のコードは、既存のプログラムにボタンを追加して、コード内ではなく、より使いやすいインターフェイスで選択できるようにするプログラムです。ドロップダウン メニューを使用しようとしていますが、setEthAnt1 関数にエラーがあるようです: TypeError: setEthAnt1() は引数を取りません (1 つ指定)。どの引数を渡せなかったのかわかりません。誰かアイデアはありますか?

from Tkinter import *
import ThreegroupsGraphics as three

def run():
    three.main()

def setEthAnt1():
    name = var.get()
    print name
    three.OneTo2Ant = name
    print three.OneTo2Ant

root = Tk()
var = StringVar()
var.set("Group 1 Ethnic Antagonism")
OptionMenu(root, var, "1","2","3","4","5","6","7","8","9","10", command = setEthAnt1).pack()
butn = Button(root, text = 'run',  command = run)
butn.pack()
root.mainloop() 
4

1 に答える 1

3

のコマンドを指定するOptionMenuと、選択した項目の値がコマンドに送信されるため、基本的にvar.get()は不要になります。下記参照:

from Tkinter import *
import ThreegroupsGraphics as three

def run():
    three.main()

def setEthAnt1(name):
    print name
    three.OneTo2Ant = name
    print three.OneTo2Ant

root = Tk()
var = StringVar()
var.set("Group 1 Ethnic Antagonism")
OptionMenu(root, var, "1","2","3","4","5","6","7","8","9","10", command = setEthAnt1).pack()
butn = Button(root, text = 'run',  command = run)
butn.pack()
root.mainloop() 

setEthAnt1パラメータを使用せずにを使用する場合は、次のようにlamda関数var.get()のコマンドを作成できます。OptionMenu

OptionMenu(root, var, "1","2","3","4","5","6","7","8","9","10", command = lambda _: setEthAnt1).pack()
于 2012-06-22T15:18:44.143 に答える