【问题标题】:why is a window being created without the function being called?为什么在没有调用函数的情况下创建了一个窗口?
【发布时间】:2013-03-13 06:43:39
【问题描述】:

我是 Tkinter 编程新手。

数据

我有以下 tkinter 代码:

##Program to print something or exit

def say_hi():
    second = Tk()
    Label1 = Label(second,text="HI!")
    Label1.pack()
  
from Tkinter import *
  
root = Tk()
  
r = Button(root,text="QUIT",fg="red",command=quit)
r.pack()
  
b = Button(root,text="Say something",fg="red",bg="black",command=say_hi())
b.pack()

root.mainloop()

这给出了以下输出:

然后将窗口移到后面:

怀疑

为什么second 窗口打开而没有调用函数say_hi()

如何解决这个问题?

如何在当前窗口中启动一个新窗口或一个框架或者在当前窗口中打印一个标签,以便在按下按钮后才打印HI

我不想在控制台上打印它,因为大多数时候它都会被忽视。

规格

Visual Python Tkinter IDE 2.6

【问题讨论】:

  • 你不应该创建多个Tk的实例; Tkinter 并非设计为以这种方式使用,它会以意想不到的方式运行。如果您需要多个窗口,请创建 Toplevel 的实例。

标签: python tkinter


【解决方案1】:

say_hi之后删除()say_hi()会调用该函数:

b = Button(root,text="Say
        something",fg="red",bg="black",command=say_hi) b.pack()

【讨论】:

  • 非常感谢先生!在 say_hi 之后删除 () 后它起作用了。
  • 先生,您能告诉我为什么会这样吗?
  • command 的参数必须是函数本身,而不是函数的结果。
【解决方案2】:

代码有错误:

command 中的say_hi 之后不会出现()

修改后的代码如下:

##Program to print something or exit

def say_hi():
    second = Tk()
    Label1 = Label(second,text="HI!")
    Label1.pack()

from Tkinter import *

root = Tk()

r = Button(root,text="QUIT",fg="red",command=quit)
r.pack()

b = Button(root,text="Say something",fg="red",bg="black",command=say_hi)
b.pack()

root.mainloop()

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 2013-07-21
    • 1970-01-01
    • 2018-06-23
    • 2015-10-04
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多