【发布时间】:2015-05-31 14:35:18
【问题描述】:
首先请注意,我在 Enthought/Canopy 中执行所有这些操作。
我有这个基本的 GUI,它有 4 个输入框,您可以在其中输入内容,然后您点击一个按钮,它会打印您输入的内容。但是,它并没有按照我想要的方式运行。当您启动代码并输入值并按下按钮时,它不会做任何事情,然后您关闭 gui 窗口并打印您输入的值。
此外,当您输入值并单击一次按钮时,它不会再执行任何操作,但如果您再次单击该按钮,它会打印值,但不会像预期的那样。假设您输入了 1、2、3、4 并按了两次按钮,您在屏幕上看到的内容是 1、2、3、4、1,当您现在关闭窗口时,它会打印出其余部分。
如果你们能帮助我解决这个问题,我将不胜感激。先感谢您。以下是我的代码:
更新:IDLE 不会出现此问题,只有 Canopy 会出现此问题。
from Tkinter import *
class Application:
def printcmd(self):
print(self.entrybox.get())
def __init__(self, master):
self.entrybox = Entry(master)
self.button = Button(master, text="print", command = self.printcmd)
self.entrybox.grid()
self.button.grid()
root = Tk()
Application(root)
root.mainloop()
【问题讨论】:
-
我并不是说这会解决您的问题,因此它是评论而不是答案,但 python 是一种垃圾收集语言。如果垃圾收集器参与其中,创建
Application的实例而不将其分配给变量可能会导致奇怪的事情发生。正如我所说,这很可能无法解决您的问题,但值得一试,并且仍然有助于形成良好的编程形式。 -
我将 Application 更改为 App 并尝试了 c = App(root),但不幸的是我仍然遇到了同样的奇怪行为。让它如此奇怪的是,这是一个非常简单的程序,只有几个代码,但我尝试用 IDLE 运行它,但我在这样做时没有遇到这个问题。
标签: python user-interface button tkinter canopy