【问题标题】:What causes '_tkinter.TclError: can't invoke "update" command: application has been destroyed'?是什么导致'_tkinter.TclError:无法调用“更新”命令:应用程序已被破坏'?
【发布时间】:2019-05-28 22:00:22
【问题描述】:

我创建了一个聊天 GUI。问题是,在 pycharm 之外它不能正常工作。 “无法正常工作”是指它显示的字体不是我的选择之一。该字体和显示框的大小也不是我选择的那个。使用此 GUI 的程序中显示的错误是标题中的错误。我认为 conda 可能对此负责,但我不确定。我对此是否正确,或者这是别的什么?还有我该如何解决这个问题?提前致谢!

import tkinter
window = tkinter.Tk()
window.geometry("430x720")
window.config(bg="#2b2929")

message_box = tkinter.Text(window, height=32, state="disabled") 
message_box.pack(side=tkinter.TOP, padx=15,pady=5, fill=tkinter.Y)
message_box.config(bg="#595959", fg="#ffffff", font=("Impact", 12))

input_user = tkinter.StringVar()
text_box = tkinter.Text(window, height=5)
text_box.pack(side=tkinter.BOTTOM,  padx=15, pady=8)
text_box.config(bg="#595959", fg="#ffffff", font=("Impact", 12))


def send_message(event):
    input_get = text_box.get('1.0', tkinter.END)
    if input_get.isspace():
        input_user.set('')
        text_box.delete('1.0', tkinter.END)
        return "break"

    message_box.configure(state='normal')
    message_box.insert(tkinter.INSERT, input_get)
    message_box.see("end")
    message_box.configure(state='disabled')
    input_user.set('')
    text_box.delete('1.0', tkinter.END)
    return "break"


text_box.bind("<Return>", send_message)
window.mainloop()

【问题讨论】:

  • 此代码不会按原样运行——存在缩进问题以及试图在函数外部调用return。我认为即使缩进问题得到解决,这段代码也不可能产生你所说的错误。
  • 抱歉,这里粘贴不正确。原始版本与下面的版本一样,但在 PyCharm 之外仍然无法正常工作。
  • 您的代码按预期工作。

标签: python user-interface tkinter conda


【解决方案1】:

对我来说它有效,我只缩进了最后几行。

import tkinter
window = tkinter.Tk()
window.geometry("430x720")
window.config(bg="#2b2929")

message_box = tkinter.Text(window, height=32, state="disabled") 
message_box.pack(side=tkinter.TOP, padx=15,pady=5, fill=tkinter.Y)
message_box.config(bg="#595959", fg="#ffffff", font=("Impact", 12))

input_user = tkinter.StringVar()
text_box = tkinter.Text(window, height=5)
text_box.pack(side=tkinter.BOTTOM,  padx=15, pady=8)
text_box.config(bg="#595959", fg="#ffffff", font=("Impact", 12))


def send_message(event):
    input_get = text_box.get('1.0', tkinter.END)
    if input_get.isspace():
        input_user.set('')
        text_box.delete('1.0', tkinter.END)
        return "break"

    message_box.configure(state='normal')
    message_box.insert(tkinter.INSERT, input_get)
    message_box.see("end")
    message_box.configure(state='disabled')
    input_user.set('')
    text_box.delete('1.0', tkinter.END)
    return "break"


text_box.bind("<Return>", send_message)
window.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2022-08-03
    • 2016-06-11
    相关资源
    最近更新 更多