Ich bin neu in Python und versuche eine GUI zu erstellen, die von Datum und Datum vom Benutzer dauert und liest die Daten entsprechend aus einer CSV-Datei und zeigt die Urinausgabe (berechnet in der csvimport-Funktion)). Ich möchte auch die Grafik für eine bestimmte Zeit und Urin-Ausgabe in dieser Zeit grafisch darstellen.Python GUI und Funktionsaufruf mit Tkinter
Kann mir jemand helfen? Mein Code ist bis jetzt unten und es zeigt keine GUI an. Kann jemand bitte die Grundfehler korrigieren und mir dabei helfen?
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)
self.in_file = None
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.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(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 = raw_input('\nEnter FROM Date (e.g. 2013-11-29) :')
from_date = datetime.date(*map(int, from_raw.split('/')))
print ('From date: = ' + str(from_date))
to_raw = raw_input('\nEnter TO Date (e.g. 2013-11-30) :')
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()
Danke für Ihre Antwort. Ich bin verwirrt, wo sollte ich ** Eintrag ** verwenden? in der ** takedate ** Funktion? und wie werde ich das in der GUI zeigen, wenn es in der ** Takedate ** Methode verwendet wird? – rushan
@rushan Code hinzugefügt. – Lafexlos
Hallo. jetzt, wenn ich die Daten in das Textfeld eingeben, tritt der folgende Fehler auf: ** TypeError: CsvImport() nimmt 1 Positionargument, aber 2 wurden gegeben ** können Sie mir dabei helfen? – rushan