【问题标题】:Why is Tkinter not displaying Button?为什么 Tkinter 不显示按钮?
【发布时间】:2020-01-14 07:48:50
【问题描述】:
import Tkinter as ass
root = ass.Tk()
frame = ass.Frame(root)
button1 = ass.Button(frame, command=button1(), text='Kushagra', width=50, height=40)
button1.pack(side=ass.LEFT)
root.mainloop()

button1() 是我创建的一个我认为不相关的函数。运行此程序后,我得到的只是一个空白窗口。我该如何解决这个问题?

【问题讨论】:

  • @martineau: def button1(): global a a += 1 return a
  • 我对它的重要性有误,因此删除了我之前的评论——尽管我关于在创建 Button 小部件时不调用它的观点仍然有效。 @Deepak Raj 的回答是为什么什么都没有显示(尽管他根本没有指定 command 选项)。
  • @martineau 抱歉,如果我反复提问很烦人,但在调用 button1() 时我做错了什么?你能纠正我吗?
  • 一般来说,当您想在创建 tkinter 小部件时指定回调函数时,只需使用它的名称,不带 () 前缀 - 在这种情况下为 command=button1。但请注意,在这种情况下还有另一个潜在问题,因为当您将小部件分配给 button1 时,它会覆盖其原始值,之后该名称将不再引用您定义的原始函数。另一方面,如果从那时起您从不显式调用函数可能并不重要。
  • P.S.为了避免混淆和潜在的问题,我建议你给函数一个唯一的名字……比如button1_callback。

标签: python tkinter python-2.x


【解决方案1】:

您没有在创建框架后打包框架小部件。以下是修改后的代码

import tkinter as ass
root = ass.Tk()
frame = ass.Frame(root)
frame.pack()
button1 = ass.Button(frame, text="QUIT")
button1.pack(side=ass.LEFT)
root.mainloop()

【讨论】:

    【解决方案2】:

    如果你想显示框架,你必须pack。这将显示按钮,但函数 button1() 不会按您的意愿工作,因为它会在作为 command 提供给 Button 时被调用,因为您在之后使用了括号 ()将其作为command 提供给按钮。您只需要删除这些括号。

    像这样:

    import tkinter as ass
    
    
    def button1():
        return
    
    
    root = ass.Tk()
    frame = ass.Frame(root)
    frame.pack()
    button1 = ass.Button(frame, command=button1, text='Kushagra', width=50, height=40)
    button1.pack(side=ass.LEFT)
    root.mainloop()
    

    如果您需要将参数传递给任何函数,那么您应该在将其作为command 传递给任何Button 之前使用lambda。

    像这样:

    import tkinter as ass
    
    
    def test(a):
        print(a)
    
    
    root = ass.Tk()
    frame = ass.Frame(root)
    frame.pack()
    button1 = ass.Button(frame, command=lambda: test(1), text='Kushagra', width=50, height=40)
    button1.pack(side=ass.LEFT)
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 2012-02-27
      • 2017-06-06
      • 2016-05-19
      • 1970-01-01
      • 2022-10-24
      • 2019-10-18
      相关资源
      最近更新 更多