繁体   English   中英

如何使用tkinter仅显示一列csv并在100ms后用下一个值覆盖

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM