<i id='DCNEY'><tr id='DCNEY'><dt id='DCNEY'><q id='DCNEY'><span id='DCNEY'><b id='DCNEY'><form id='DCNEY'><ins id='DCNEY'></ins><ul id='DCNEY'></ul><sub id='DCNEY'></sub></form><legend id='DCNEY'></legend><bdo id='DCNEY'><pre id='DCNEY'><center id='DCNEY'></center></pre></bdo></b><th id='DCNEY'></th></span></q></dt></tr></i><div id='DCNEY'><tfoot id='DCNEY'></tfoot><dl id='DCNEY'><fieldset id='DCNEY'></fieldset></dl></div>

<small id='DCNEY'></small><noframes id='DCNEY'>

<legend id='DCNEY'><style id='DCNEY'><dir id='DCNEY'><q id='DCNEY'></q></dir></style></legend>

      <tfoot id='DCNEY'></tfoot>

          <bdo id='DCNEY'></bdo><ul id='DCNEY'></ul>
      1. 带有lambda的for循环中的Tkinter分配按钮命令

        Tkinter assign button command in a for loop with lambda(带有lambda的for循环中的Tkinter分配按钮命令)
          <bdo id='kfhrM'></bdo><ul id='kfhrM'></ul>
            <legend id='kfhrM'><style id='kfhrM'><dir id='kfhrM'><q id='kfhrM'></q></dir></style></legend>
          • <tfoot id='kfhrM'></tfoot>

            1. <i id='kfhrM'><tr id='kfhrM'><dt id='kfhrM'><q id='kfhrM'><span id='kfhrM'><b id='kfhrM'><form id='kfhrM'><ins id='kfhrM'></ins><ul id='kfhrM'></ul><sub id='kfhrM'></sub></form><legend id='kfhrM'></legend><bdo id='kfhrM'><pre id='kfhrM'><center id='kfhrM'></center></pre></bdo></b><th id='kfhrM'></th></span></q></dt></tr></i><div id='kfhrM'><tfoot id='kfhrM'></tfoot><dl id='kfhrM'><fieldset id='kfhrM'></fieldset></dl></div>

                  <tbody id='kfhrM'></tbody>

              • <small id='kfhrM'></small><noframes id='kfhrM'>

                  本文介绍了带有lambda的for循环中的Tkinter分配按钮命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试创建几个Button(使用for循环),如下所示:

                  def a(self, name):
                      print(name)
                  
                  users = {"Test": "127.0.0.0", "Test2": "128.0.0.0"}
                  row = 1
                  for name in users:
                      user_button = Tkinter.Button(self.root, text=name,
                                                   command=lambda: self.a(name))
                      user_button.grid(row=row, column=0)
                      row += 1
                  

                  ,并且每个按钮都有自己的参数(测试获取"Test"和测试2获取"Test2"),但是当我按下按钮时,它们都会打印"Test2",这意味着它们使用相同的函数和相同的参数。

                  我如何解决此问题?

                  推荐答案

                  问题出在for循环中的lambda表达式。它使用的是name变量,但是name变量在for循环的每次迭代中都会重新赋值,因此最终所有按钮都会获得for循环中name赋值的最后一个值。要避免这种情况,您可以在lambda表达式中使用默认关键字参数,如下所示:

                  user_button = Tkinter.Button(self.root, text=name,
                                               command=lambda name=name: self.a(name))
                  

                  这将在每次循环中将name变量的当前值绑定到lambda的name关键字参数,从而产生所需的效果。

                  这篇关于带有lambda的for循环中的Tkinter分配按钮命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Split a Pandas column of lists into multiple columns(将 Pandas 的列表列拆分为多列)
                  How does the @property decorator work in Python?(@property 装饰器在 Python 中是如何工作的?)
                  What is the difference between old style and new style classes in Python?(Python中的旧样式类和新样式类有什么区别?)
                  How to break out of multiple loops?(如何打破多个循环?)
                  How to put the legend out of the plot(如何将传说从情节中剔除)
                  Why is the output of my function printing out quot;Nonequot;?(为什么我的函数输出打印出“无?)

                  <small id='RXQWz'></small><noframes id='RXQWz'>

                        <bdo id='RXQWz'></bdo><ul id='RXQWz'></ul>

                      • <tfoot id='RXQWz'></tfoot>

                        1. <i id='RXQWz'><tr id='RXQWz'><dt id='RXQWz'><q id='RXQWz'><span id='RXQWz'><b id='RXQWz'><form id='RXQWz'><ins id='RXQWz'></ins><ul id='RXQWz'></ul><sub id='RXQWz'></sub></form><legend id='RXQWz'></legend><bdo id='RXQWz'><pre id='RXQWz'><center id='RXQWz'></center></pre></bdo></b><th id='RXQWz'></th></span></q></dt></tr></i><div id='RXQWz'><tfoot id='RXQWz'></tfoot><dl id='RXQWz'><fieldset id='RXQWz'></fieldset></dl></div>
                          <legend id='RXQWz'><style id='RXQWz'><dir id='RXQWz'><q id='RXQWz'></q></dir></style></legend>

                            <tbody id='RXQWz'></tbody>