Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 使用forloop-tkinter将多个命令与多个按钮关联_Python_Python 3.x_For Loop_Tkinter_Tk - Fatal编程技术网

Python 使用forloop-tkinter将多个命令与多个按钮关联

Python 使用forloop-tkinter将多个命令与多个按钮关联,python,python-3.x,for-loop,tkinter,tk,Python,Python 3.x,For Loop,Tkinter,Tk,在下面的代码中,创建了3个按钮并与3个不同的操作关联。现在每个按钮都必须执行其操作 import tkinter as tk class App(): def __init__(self,parent): self.parent = parent self.do_oper() def do_oper(self): self.labelframe = tk.Frame(self.parent).grid() m

在下面的代码中,创建了3个按钮并与3个不同的操作关联。现在每个按钮都必须执行其操作

import tkinter as tk

class App():
    def __init__(self,parent):
        self.parent = parent
        self.do_oper()


    def do_oper(self):
        self.labelframe = tk.Frame(self.parent).grid()
        m = ['a','b','c']
        n = ['self.a','self.b','self.c']
        dict_cmds = dict(zip(m,n))
        for i,cmd in enumerate(dict_cmds):
            self.Label=tk.Button(self.labelframe,command=lambda cmd=cmd:dict_cmds[cmd])
            self.Label.config(text=cmd)
            self.Label.grid(row=1,column=i)


    def a(self):
        print('Inside -> a')

    def b(self):
        print('Inside -> b')

    def c(self):
        print('Inside -> c')

if __name__ =='__main__':
    root = tk.Tk()
    App(root)
    root.mainloop()

dict_-cmds={'a':self.a,'b':self.b,'c':self.c}
tk.Button(self.labelframe,command=dict_-cmds[cmd])
我以前试过,但没用是的,谢谢。但是,当我将两个列表压缩为一个dict时,如何从中删除字符串?这是将它们存储为字符串的原因吗?直接引用函数会更好。我看不出图像与问题有什么关系。您的列表为什么是
['self.a','self.b']
而不是
[self.a,self.b]
?如果列表是在没有访问self的情况下创建的,那么它仍然可能是
[App.a,App.b]
dict_cmds={'a':self.a,'b':self.b,'c':self.c}
tk.按钮(self.labelframe,command=dict_cmds[cmds])
我之前尝试过,但没有成功,谢谢。但是,当我将两个列表压缩为一个dict时,如何从中删除字符串?这是将它们存储为字符串的原因吗?直接引用函数会更好。我看不出图像与问题有什么关系。您的列表为什么是
['self.a','self.b']
而不是
[self.a,self.b]
?如果创建的列表没有访问
self
,那么它仍然可能是
[App.a,App.b]