2017-02-15 1 views
0

필자는 CSV 파일을 읽고 데이터에서 액체 출력을 계산하는 GUI를 만들었습니다. 지금은 두 가지 싶지 : 나는 시간에 따라 출력을 생성 할
1) 그냥 사용자가 특정 시간 또는 날짜 내 GUI에서 별도의 창에 그래프를 생성 할
2) 날짜와 같은파이썬 GUI로 그래프 만들기

import csv 
from tkinter import * 
from tkinter.filedialog import askopenfilename 
from tkinter.messagebox import showwarning, showinfo 
import datetime 

#csv_file = csv.reader(open("C:\Users\Lala Rushan\Downloads\ARIF Drop Monitoring Final\ARIF Drop Monitoring Final\DataLog.csv")) 
from Tools.scripts.treesync import raw_input 
class App(Frame): 
    def __init__(self, master): 
     Frame.__init__(self, master) 


     button1 = Button(self, text="Browse for a file", command=self.askfilename) 
     button2 = Button(self, text="Count the file", command=self.takedate) 
     button3 = Button(self, text="Exit", command=master.destroy) 
     button1.grid() 
     button2.grid() 
     button3.grid() 
     self.userInputFromRaw = Entry(self) 
     self.userInputFromRaw.grid() 

     self.userInputToRaw = Entry(self) 
     self.userInputToRaw.grid() 

     self.grid() 

    def askfilename(self): 
     in_file = askopenfilename() 
     if not in_file.endswith(('.CSV')): 
      showwarning('Are you trying to annoy me?', 'How about giving me a CSV file, genius?') 
     else: 
      self.in_file=in_file 

    def CsvImport(self,csv_file): 


     dist = 0 
     for row in csv_file: 
      _dist = row[0] 
      try: 
       _dist = float(_dist) 
      except ValueError: 
       _dist = 0 

      dist += _dist 
     print ("Urine Volume is: %.2f" % (_dist*0.05)) 


    def takedate(self): 
     from_raw = self.userInputFromRaw.get() 
     from_date = datetime.date(*map(int, from_raw.split('/'))) 
     print ('From date: = ' + str(from_date)) 
     to_raw = self.userInputToRaw.get() 
     to_date = datetime.date(*map(int, to_raw.split('/'))) 
     in_file = ("H:\DataLog.csv") 
     in_file= csv.reader(open(in_file,"r")) 

     for line in in_file: 
      _dist = line[0] 
      try: 
       file_date = datetime.date(*map(int, line[1].split(' ')[1].split('/'))) 
       if from_date <= file_date <= to_date: 
        self.CsvImport(in_file) 

      except IndexError: 
       pass 

root = Tk() 
root.title("Urine Measurement") 
root.geometry("500x500") 
app = App(root) 
root.mainloop() 

가 어떻게 위의 두 작업을 얻을 수 있습니다

이 내 코드?

+0

대부분의 사람들은 그런 식으로 MatPlotLib을 사용할 것입니다. –

+0

내 코드에 matplotlib를 사용하는 예를 들려 줄 수 있습니까? 나는 파이썬에 익숙하지 않으므로 그것을 이해할 수 없다. – rushan

답변

0

Jacques de Hooge와 동의해야합니다.이 경우 matplotlib을 사용해야합니다. 파일의 beggining에서 는 그것을 가져옵니다

import matplotlib.pyplot as plt 

만 플롯으로 새 창을 열려면 같이, matplotlib 창은 충분합니다. 당신은 산포도를 사용할 수 있습니다 X은 X 좌표와 Y은 y 좌표를 가진 iteratable과 iteratable입니다

plt.scatter(X, Y) 

. 당신이 시간에 일정한 변화 뭔가를 원하기 때문에, 당신은 값으로 values 목록에있는 것은 다음을 수행, 플롯 할 수 있습니다

plt.scatter(range(len(values)), values) 
plt.show() 

을 또한 있도록 스레드 내에서이 작업을 실행할 수 있습니다 matplotlib 창이 열려있는 동안 프로그램의 나머지 부분은 "고정"되지 않습니다. 이것이 설명되는 장소가 많이 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 X 축에 ** takedate() 함수와 y 축에서 오는 날짜를 사용하고 싶다. ** csvimport() ** 함수에서 나오는 액체 측정 결과를 출력하고 싶다. . 그래프를 어디에 그려야합니까? ** __ init __ ** 함수에서? – rushan

관련 문제