![](/img/trans.png)
[英]Python - Updating core array loop < 100ms and keeping the tkinter GUI responsive
[英]How to display only one column of csv using tkinter and overwrite with next value after 100ms
.csv 文件内容:
Latitude(deg), Longitude(deg), Speed(ms-1)
12.8742,13.6543, 0.23,
12.8743,13.6544, 0.25,
12.8744,13.6545, 0.29,
import tkinter
import csv
root = tkinter.Tk()
# open file
with open("File.csv", newline = "") as file:
reader = csv.reader(file)
# Reads all rows and columns[enter image description here][1]
r = 0
for col in reader:
c = 0
for row in col:
label = tkinter.Label(root, width = 10, height = 2, \
text = row, relief = tkinter.RIDGE)
label.grid(row = r, column = c)
c += 1
r += 1
root.mainloop()
电流输出:
预期结果更新速度列,下一个值覆盖具有相同文本框大小的前一个值:
对于 tkinter 中的任何类型的循环,您应该查看“.after(ms, func)”方法,该方法允许您指定一个循环,其中值在几毫秒后更新
这是一个最小的工作示例,只需将数据替换为您的 csv 文件(并在到达数据集末尾时捕获 StopIteration 错误)
import tkinter as tk
import numpy as np
data = (x for x in np.random.random_sample(1000))
root = tk.Tk()
svar = tk.StringVar()
tk.Label(root, text='Speed(ms-1)').pack()
tk.Label(root, textvariable=svar).pack()
def update_speed():
svar.set(next(data))
root.after(500, update_speed)
update_speed()
root.mainloop()
我已经修改了这段代码。 我需要通过 tkinter 绘制和显示速度值。 但是下面的代码在显示所有速度值并关闭显示框后按顺序工作,开始绘制纬度和经度。 我能做到既平行显示和绘制具有相同的文件?
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import pandas as pd
import numpy as np
import tkinter as tk
HV = pd.read_csv('file.csv')
lat_HV = []
lon_HV = []
speed_HV = []
lat_HV = HV['Latitude(deg)']
lon_HV = HV[' Longitude(deg)']
speed_HV = HV[' Speed(ms-1)']
data = iter(speed_HV)
root = tk.Tk()
svar = tk.StringVar()
tk.Label(root, text='Speed(ms-1)').pack()
tk.Label(root, textvariable=svar).pack()
def update_speed():
svar.set(next(data))
root.after(100, update_speed)
update_speed()
root.mainloop()
plt.style.use('seaborn')
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
def animation(i):
HV = pd.read_csv('file.csv')
lat_HV = []
lon_HV = []
speed_HV = []
lat_HV = HV[0:i]['Latitude(deg)']
lon_HV = HV[0:i][' Longitude(deg)']
speed_HV = HV [0:i][' Speed(ms-1)']
ax.clear()
plt.title('IMA Scenario')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
ax.scatter(lon_HV, lat_HV,s=30, marker="s",label='HV')
plt.legend(loc='upper right');
animation = FuncAnimation(fig, func=animation, interval=100)
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.