본문 바로가기
프로그램

[파이썬] 문제 : tkinter로 슬라이더 만들기

by 오디세이99 2023. 1. 5.
728x90
반응형

파이썬 csv파일로 matplotlib 그래프 그리기

그래프를 그리기위해서

 
readData = pd.read_csv(path,
                       sep=',',  
                       engine='c',  
                       quoting=3,  
                       error_bad_lines=False,  
                       index_col='TimeString',
                       parse_dates=True)
 
데이터를 이렇게 읽어왔습니다.
 
TimeString
21.10.2022 21:04:32        1.0
21.10.2022 21:04:33        2.0
21.10.2022 21:04:34        3.0
21.10.2022 21:04:35        4.0
21.10.2022 21:04:36        5.0
21.10.2022 21:04:37        6.0
 
프린트해보면 데이터가 저런식으로 입력이 되어 있는데
 
슬라이더를 움직여서 저 시간값을 가져오거싶습니다.
일단 슬라이더 멕스값은 행갯수로 설정하게 해놨고
0-Max까지 숫자는 받아오는데 이걸로 어떻게 해야 저 시간값을 빼올수 있을까요?
 
 
(방법)

어떤 UI package의 슬라이더인지 말씀이 없어서

tkinter의 Scale(슬라이더)로 만든 것입니다.

다음은 테스트를 위해서 df 를 만든 것입니다.

import pandas as pd
import numpy as np

readData = pd.DataFrame(columns=range(2))
readData.columns = ['t','value']

readData.loc[len(readData)] = ['21.10.2022 21:04:32',1.0]
readData.loc[len(readData)] = ['21.10.2022 21:04:33',2.0]
readData.loc[len(readData)] = ['21.10.2022 21:04:34',3.0]
readData.loc[len(readData)] = ['21.10.2022 21:04:35',4.0]
readData.loc[len(readData)] = ['21.10.2022 21:04:36',5.0]
readData.loc[len(readData)] = ['21.10.2022 21:04:37',6.0]

슬라이더로 readData의 time부분 읽는 것입니다.

from tkinter import *
 
root = Tk()
root.title('슬라이더 위젯 study')
root.geometry("400x400")
 
def slide(self):
    value = readData.t[vertical.get()]     # readData.t의 인덱스로 값을 가져옴 
    label.config(text=value)               # Label에 text 설정

    
label = Label(root, text=readData.t[0])     # readData.t의 인덱스 0 의 값으로 설정
label.pack(side=LEFT, padx=10,pady=10)

to_n = len(readData)-1                      # readData의 row 수. 인덱스로 사용하기 때문에 -1

vertical = Scale(root, from_=0, to=to_n, orient=VERTICAL, command=slide)   # to를 readData의 row수로 설정
vertical.pack(side=LEFT, padx=10,pady=10)
 
root.mainloop()

728x90
반응형

댓글