<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分配按钮命令

        时间:2024-04-20
          <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分配按钮命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:可以用github.io在Web上运行python吗? 下一篇:如何用Tkinter创建等宽网格列?

                  相关文章

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

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

                  1. <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>