【问题标题】:How to show the current window in Tkinter?如何在 Tkinter 中显示当前窗口?
【发布时间】:2020-11-22 11:54:37
【问题描述】:

希望您能帮我解决以下问题。

我正在使用库 tkinter 和 我有一个 main_screen main_screen= Tk()mainloop() 循环

在 main_screen 内部,有一个小数据表单,您需要在其中键入一些必要的数据。 在窗口的末尾,我有一个按钮可以打开第二个窗口。

单击该按钮后,会出现 report_screen(请参阅下面的代码)

新窗口应该会出现命令Toplevel(),并打印一个标签,上面写着正在启动:

request_start = LabelFrame(report_screen, text="Starting...").pack()

那么我的程序必须运行一个大约需要 10 秒才能完成的进程。

假设我的流程就是这样

time.sleep(10)

最后,运行下一行:

request_done = LabelFrame(report_screen, text="Done").pack()

我的问题是什么?

问题是report_screen 直到 10 秒的过程完成后才会出现,并且同时出现两个标签“开始...”和“完成”。

我不希望这样,我要求 report_screen 出现带有“正在启动”标签,然后运行该进程,当该进程完成后,添加“完成”标签

这是我遇到此问题的代码部分

report_screen = Toplevel()

request_start = Label(report_screen, text="Starting...").pack()

time.sleep(10) #example of my process that takes around 10 seconds

request_done = Label(report_screen, text="Done").pack()

【问题讨论】:

  • time.sleep(10) 就像它所说的那样:它使整个应用程序进入睡眠状态。这个网站上有无数关于在 tkinter 应用程序中调用 time.sleep(...) 的问题。
  • @BryanOakley,我知道但我的过程不是time.sleep,我只是举个例子,我的实际过程大约需要10秒
  • 像大多数 GUI 机制一样,它运行一个事件循环(又名 mainloop),如果不允许循环,屏幕更新将不会发生。在第一次更新之后和你的任务之前尝试report_screen.update_idletasks()
  • @KarlKnechtel 做得很好,似乎update() 方法可以很好地更新屏幕中的任何内容。

标签: python tkinter


【解决方案1】:

使用update() 方法可以更新屏幕中的任何内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多