我见过类似的问题,说你应该只关注另一个小部件,这样在应用程序运行时按钮就不会显示为冻结状态。我想最终建立一个进度条,但是现在我只想点击运行按钮并释放焦点。
...
main_menu = ttk.Frame(self.root)
run_button = ttk.Button(main_menu, text="Run",
command=lambda self=self: self.execute_dummy())
def execute_dummy(self):
self.root.focus()
#here I have a notebook also in the main frame, the third tab has an output buffer I want to switch too on execution
self.main_notebook_frame.select(2)
self.execute()
def execute(self):
#my class for handling the computation
import gui_execute
gui_execute()
运行按钮最终将切换到notebook_frame中的第三个选项卡,但仅在执行完成后才会切换。如果存在大的输入文件,则会出现问题。运行按钮看起来“冻结”,因为计算可能需要几分钟才能完成。无论如何我可以在执行之前切换到notebook_frame第三个选项卡吗?这是为了确保用户不冻结应用程序?
答案 0 :(得分:1)
您可以尝试使用after(time, function_name)
直接在execute_dummy()
中执行函数,但是在系统的主循环中执行。同时程序应该改变标签。
self.root.after(100, self.execute) # 100ms = 0.1 second