如何使用Tkinter和Python连接带有按钮命令的小部件?

如何使用Tkinter和Python连接带有按钮命令的小部件?,python,tkinter,Python,Tkinter,这就是我的问题:我正在尝试使用Tkinter创建一个GUI,它可以读取文件夹中的多个文件,并在界面上显示它们的值。 但当我按下小部件按钮时,什么也没发生 这是我使用的脚本,如果您不理解我的过程,请随时提问 如果有人能帮助我,我将非常感激 for s in SOIList and valuesList: if s == selectedConfig.get() and s == selectedConfig.get(): textfilespath

这就是我的问题:我正在尝试使用Tkinter创建一个GUI,它可以读取文件夹中的多个文件,并在界面上显示它们的值。 但当我按下小部件按钮时,什么也没发生

这是我使用的脚本,如果您不理解我的过程,请随时提问

如果有人能帮助我,我将非常感激

    for s in SOIList and valuesList:

        if s == selectedConfig.get() and s == selectedConfig.get():

           textfilespathB = 'C:/temp/dossiersoi2/'+s+'SOI.txt'
           textfilespathC = 'C:/temp/fichiervalues2/'+s+'val.txt'

           with open(textfilespathB, "r") as f:
               frame2 = Frame(root, width = 50, height = 100)
               frame2.grid(row = 2, column = 0)
               Label(frame2, text=f.read()).pack()

           with open(textfilespathC, "r") as f:
               frame4 = Frame(root, width = 50, height = 100)
               frame4.grid(row = 2, column = 1)
               Label(frame4, text=f.read()).pack()

        else:
            print("not working")
这是与我的脚本相关的GUI


考虑一下这一行代码:

for s in SOIList and valuesList:
它不是在做你期望的事情。从对该答案早期版本的注释来看,您似乎希望并行迭代
SOIList
valuesList
(即:每次循环中,您都希望从一个列表中选择一个项目,从另一个列表中选择一个项目)

这个问题的答案很好地解释了这样做的方法:

在您的情况下,代码如下所示:

for s, v in zip(SOIList, valuesList):
    if s == selectedConfig.get() and v == selectedConfig.get():
        ...

请发布一个最小的、完整的、可验证的示例-cf。您当前的代码段既不最小也不完整。您做了什么来调试它?是否添加了一些打印语句以验证是否调用了该命令?您是否在条件检查之前以及循环的每次迭代中验证了变量的值?@Brunodesshuilliers抱歉,这是我在本网站上的第一篇帖子,我将尽快更改帖子:)@BryanOakley我在“if循环”中添加了一个打印以查看发生了什么,我只获得了打印的输出。这意味着问题出在我的函数(def findGoodFile)中,因为一切正常,当我将命令(findGoodFile)分配给我的button@Nikola.L当前位置该行没有问题,只是您正在进行两次相同的检查。谢谢您的回复。我试过你说的,但没用。这就像这行有问题:如果s==selectedConfig.get()和s==selectedConfig.get():@BryanOakley,这种情况的意思是当SOIList和valuesList中的元素名称与我们在选项菜单中选择的元素名称相同时,我们显示了相关文件的值。@Nikola.L:每次循环中,您是否希望从
SOIList
valuesList
中提取一项,还是希望一次只从一个列表中提取一项,直到用完为止,然后从另一个列表中提取一项?是的,这就是我要做的,从SOIList和valuesList中选取第一个项目,并将它们与我的选项菜单中的项目进行比较,如果它们相同,则我希望在GUI上打印相关文件的值。现在,当我运行脚本时,我通过打印命令获得6次“不工作”。再次感谢。我在“for”之后打印了一张照片,得到了好的物品。但是对于'if'循环,它没有在GUI上打印文件的值,我只获得了'else'的print命令。我认为“如果”可能有问题。似乎s和v与我们通过get()获得的项不匹配。