Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用与所有其他选项相同的命令将选项添加到选项菜单_Python_Tkinter_Optionmenu_Tkinter.optionmenu - Fatal编程技术网

Python 使用与所有其他选项相同的命令将选项添加到选项菜单

Python 使用与所有其他选项相同的命令将选项添加到选项菜单,python,tkinter,optionmenu,tkinter.optionmenu,Python,Tkinter,Optionmenu,Tkinter.optionmenu,嗨,我正在尝试根据用户想要的选项数量向选项菜单添加选项,我没有包括用户输入部分,因为它在解决问题时不是必需的。我想让选项菜单中的所有选项调用类选项show,但由于某些原因,我无法使其工作,请帮助。 这是代码,谢谢您的帮助 import tkinter as tk root = tk.Tk() root.geometry('1000x600') class optionshow: def __init__(self,p): self.p = p.get()

嗨,我正在尝试根据用户想要的选项数量向选项菜单添加选项,我没有包括用户输入部分,因为它在解决问题时不是必需的。我想让选项菜单中的所有选项调用类
选项show
,但由于某些原因,我无法使其工作,请帮助。 这是代码,谢谢您的帮助

import tkinter as tk
root = tk.Tk()
root.geometry('1000x600')

class optionshow:
    def __init__(self,p):
        self.p = p.get()
        print(self.p)

option = tk.StringVar()
option.set('Select')
optionmenu = tk.OptionMenu(root, option, 'Select', command=lambda: optionshow(option))
optionmenu.place(x=350, y=20)

choices = ('12345')
for choice in choices:
    optionmenu['menu'].add_command(label=choice, command=tk._setit(option, choice))

root.mainloop()

仅为“Entry”选项实例化该类(但不正确)。为什么不在创建菜单时采用不同的方法,同时添加所有选项:

import tkinter as tk
root = tk.Tk()
root.geometry('1000x600')

class optionshow():
    def __init__(self,p):
        self.p = p.get()
        print(self.p)

option = tk.StringVar(root)
option.set('Select')
choices = ('12345')
optionmenu = tk.OptionMenu(root, option, 'Select', *choices, command=lambda x: optionshow(option))
optionmenu.place(x=350, y=20)

root.mainloop()

注意
command=lambda
部分中的必要更正。

command=lambda:options show(option)做什么?它调用类
class options show
,这毫无意义。
command
的参数不应该是
class
。可以在参数命令中使用类,我已经做过很多次了,但是你为什么要调用一个类呢?我不知道你的目的是什么。非常感谢,这就是我试图做的,命令中的“x”是什么意思=lambda x:doIt可以是任何变量名。如果省略它,您将得到一条错误消息,lambda不接受任何参数。但是,您将option指定为参数,所以需要为lambda提供一个参数以获取该参数。