python tkinter刷新界面_Tkinter定时刷新页面或数据

1、说明

由于tkinter一旦开始执行进入mainloop,就相当于进入一个界面死循环状态,出不来;如果想做定时刷新tkinter界面的控件数据,必须调用tkinter.TK()自带的after函数,这个函数可以设定定时执行某个任务的时间,使用别的python定时执行任务的模块是不行的。

2、使用方式

实现一个刷新数据函数调用tkinter.TK()自带的after函数,在调用mainloop函数之前,将这个刷新数据函数调用,则可以实现定时刷新数据功能,参考代码如下:

import tkinter as tk

class Questions(tk.Tk):

def __init__(self, *args, **kw):

super().__init__()

self.wm_title('CSSE1001 Queue')

self.configure(background='white')

self.wm_minsize(1440, 776)                  # 设置窗口最小化大小

self.wm_maxsize(1440, 2800)                 # 设置窗口最大化大小

self.resizable(width=False, height=True)    # 设置窗口宽度不可变,高度可变

self.run()

self.refresh_data()

self.mainloop()

def refresh_data(self):

# 需要刷新数据的操作

# 代码...

self.after(10000

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python tkinter可以通过update()方法来刷新界面,该方法会重新绘制所有的组件。另外,也可以使用after()方法来定时刷新界面,例如:root.after(100, func),表示每隔1秒钟调用一次func函数来刷新界面。 ### 回答2: Python是一种流行的编程语言,它有很多库可以用来构建用户界面。其中,Tkinter是一个Python的标准库,它构建的GUI(图形界面)比较简单,适合用来开发小型的图形应用程序。Tkinter所包含的组件丰富多样,而且它也提供了一些方法来支持GUI的刷新。 在Python Tkinter中,要刷新GUI界面,其实可以通过一种简单的方法:将组件对象重新赋值一下即可。例如,假设你有一个文本标签,并且需要在程序运行过程中动态地改变它的显示内容,那么可以通过如下代码来实现: Label1 = Label(root, text="Hello, World!") Label1.pack() .... Label1["text"] = "Hello, Tkinter!" 当你想要更新Label1的显示内容时,只需要重新将文本属性赋值即可。此外,可以通过组件的refresh()方法也可以实现刷新界面,例如: Label1 = Label(root, text="Hello, World!") Label1.pack() .... Label1["text"] = "Hello, Tkinter!" Label1.refresh() 不过,需要注意的是,Tkinter默认情况下会自动刷新,如果有需要手动刷新的地方,可以设置Tkinter的update()方法实现强制刷新。例如: Label1 = Label(root, text="Hello, World!") Label1.pack() .... Label1["text"] = "Hello, Tkinter!" root.update() 总结起来,Python Tkinter刷新界面的方法很简单,我们只需要重新赋值组件的属性或者调用组件的refresh()方法即可。如果需要强制刷新,可以使用Tkinter的update()方法。 ### 回答3: Python tkinter 是一种 GUI 库,它提供了许多可视化控件和常规函数,以方便用户构建漂亮的界面和应用。在这篇文章中,我将讨论如何在 tkinter 中使用刷新来更新界面。 首先,让我们来了解 tkinter 中的事件循环。在 tkinter 中,GUI 的事件循环是一个重要的概念。GUI 在启动中会建立一个事件循环,异步等待并响应触发事件。所有的窗口、控件,而且这个事件循环也支配着所有事件的触发。例如,在 tkinter 中,当我们按下按钮时,将触发“按钮按下事件”。同理,我们刷新界面的时候也会触发 “刷新事件 ”。 接着我们来了解有两种方式刷新 tkinter界面。第一种是使用主循环调用以下两函数之一:update() 和 update_idletasks()。 1. update() 函数: 这个函数会一直在遍历 GUI 设置的事件队列,如果事件队列为空了,那 update() 函数会让 GUI 继续命令阻塞,等待新的事件到来。这个函数的目的是尽可能快的刷新界面,当存在多个 GUI 生成时,建议使用 update() 函数。 2. update_idletasks() 函数:这个函数会去存储所有与 GUI 无关的事件(比如状态改为noneditable等)。这个函数常规使用于想在空闲时间内刷新 GUI 的程序。 下面是一些常见的刷新的范例代码: 1. 使用 update(): ``` from tkinter import * import time root = Tk() def clicked(): for i in range(10): label.config(text=i) label.update() time.sleep(1) label = Label(root, text="") label.pack() button = Button(root, text="Click me!", command=clicked) button.pack() root.mainloop() ``` 2. 使用 update_idletasks(): ``` from tkinter import * import time root = Tk() def clicked(): for i in range(10): label.config(text=i) label.update_idletasks() time.sleep(1) label = Label(root, text="") label.pack() button = Button(root, text="Click me!", command=clicked) button.pack() root.mainloop() ``` 以上两个程序都有10个按钮等待1秒钟的间隔。我们可以看到 "update()" 函数是更快到达的,但是滞后性更大,而 update_idletasks() 函数则是在空闲时间内处理,所以会更具轻快感。 总结:使用 tkinter 时,为了界面更加平滑和迅速,我们常常需要用到刷新函数 update() 和 update_idletasks() 来更新 GUI 界面。但是要记住处理 GUI 应用程序时,由于 GUI 消息循环的阻塞特性,主窗口会被阻塞,所以要保证主循环的优雅结束和性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值