python Tkinter下拉菜单的问题

2024-06-16 11:32:13 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码是一个将按钮附加到现有程序上的程序,这样可以在更友好的界面上而不是在代码内部进行选择。我试图使用下拉菜单,但是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() 

Tags: run代码nameimport程序vardefroot
1条回答
网友
1楼 · 发布于 2024-06-16 11:32:13

当您为OptionMenu指定命令时,所选项的值将被发送到该命令中,这实际上使变量获取()不需要。见下文:

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有任何参数并且仍然使用var.get(),那么可以为OptionMenu生成一个lamda函数的命令,如下所示:

^{pr2}$

相关问题 更多 >