【问题标题】:How to execute codes while Tkinter mainloop for Debugging purposes如何在 Tkinter 主循环中执行代码以进行调试
【发布时间】:2019-01-10 10:06:42
【问题描述】:

假设我有这个简单的 tkinter 代码:

import tkinter as tk

root = tk.Tk()
root.geometry('200x50')
label = tk.Label(root, text='Dummy text')
label.pack()
root.mainloop()

运行后,我想通过执行exec/eval)这行:label.configure(text='Manually changed the text!')(或其他一些命令)手动更改标签以进行调试。 p>

但是,在mainloop() 期间,我无法在 Python Shell 中执行任何代码。我怎样才能在不中断mainloop() 的情况下执行代码,让代码立即出现在 Tkinter 窗口上?

【问题讨论】:

  • 您可以添加Entry并执行入口中的命令输入。
  • Tkinter 有几个用户输入选项。 EntryText、弹出式dialog 选项,甚至使用 Python input() 方法的控制台选项。所有这些都可以用来检查标签中的文本。

标签: python-3.x loops debugging tkinter eval


【解决方案1】:

acw1668 在代码中的建议:

import tkinter as tk

root = tk.Tk()
root.geometry('200x50')
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, command=lambda:exec(entry.get()),text='exec entry')
button.pack()
label = tk.Label(root, text='Dummy text')
label.pack()
root.mainloop()

【讨论】:

  • 最好在函数内部的try块中执行代码,否则无效代码可能会导致程序崩溃。
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2021-08-06
  • 2012-09-02
相关资源
最近更新 更多