python如何将监听到数据利用tkinter显示_用TKinter如何实现实时数据更新功能?

问题描述

目前我用Tkinter库做了一个GUI界面,主要功能是读取远程服务器的数据,然后显示在GUI界面上,间隔20或30秒读取一次远程数据,我采用多线程的方式来实现远程读取,这样GUI界面才会显示正常,不过这个多线程代码部分有问题。

问题出现的环境背景及自己尝试过哪些方法

3f2a07aed70589820dae00f64e2d2313.png

这是我做的主界面,正常是点击“开始监控”按钮以后20-30秒以后界面的各项显示对应的数值。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

定义提取远程服务器数据的方法,SYSINFO.doAll()这个类函数是之前定义的提取远程服务器各项数据的,因为代码量有一些大,我就不贴在上面了,但是提取完远程服务器数据以后,会保存在testdata这个列表中

def ReceiveData():

global testdata

testdata = SYSINFO.doAll()

定义多线程的一个方法

def fun_timer():

global timer,testdata

testdata = SYSINFO.doAll()

timer = threading.Timer(20, fun_timer)

timer.start()

定义开关按钮的状态全局变量

Button_Status = "OFF"

定义“开始监控”按钮的方法

def Start_Monitor():

global Button_Status

if Button_Status == "OFF":

Button_Status = "ON"

timer = threading.Timer(1, fun_timer)

timer.start()

mserver_window.update_idletasks()

定义“关闭监控”

def Close_Monitor():

global Button_Status

Button_Status = "OFF"

你期待的结果是什么?实际看到的错误信息又是什么?

目前运行这段代码以后,在多线程部分存在一些问题,好像是线程的逻辑有问题或者是如何让线程停止的条件有问题,运行以后即使testdata列表中有数据,GUI界面的这些“空”也不变化,mserver_window.update_idletasks() 这个方法不对吗?还是怎么的?

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonTkinter库中,要实现刷新数据功能,可以使用Tkinter自带的after函数。这个函数可以设定定时执行某个任务的时间。通过调用after函数,可以在指定的时间间隔内刷新数据。这样,在Tkinter的主循环(mainloop)执行期间,可以定时更新界面上的控件数据。 具体实现时,可以先定义一个刷新数据的函数,然后在调用mainloop函数之前,将这个刷新数据函数通过after函数进行定时调用。这样,每当定时器触发时,刷新数据函数就会被执行一次,从而实现数据的刷新。以下是一个示例代码: ```python import tkinter as tk def refresh_data(): # 在这里更新需要刷新的数据 # 例如,可以更新标签的文本信息或者重新绘制画布等 # 通过递归调用,实现定时刷新数据 root.after(1000, refresh_data) # 这里的1000表示刷新数据的时间间隔,单位为毫秒 # 创建主窗口 root = tk.Tk() # 在调用mainloop函数之前,将刷新数据函数调用一次 refresh_data() # 进入主循环,监听事件 root.mainloop() ``` 在上述示例代码中,refresh_data函数用于更新需要刷新的数据。在函数的最后,通过递归调用after函数,实现定时刷新数据功能。这里的时间间隔设定为1000毫秒,即每隔1秒刷新一次数据。可以根据实际需求调整刷新的时间间隔。 这样,在Tkinter的主循环执行期间,refresh_data函数会被定时调用,从而实现数据的刷新功能。通过在refresh_data函数中更新需要刷新的数据,可以实时显示最新的数据信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值