Wie lese ich voranstehende Null in Entry aus?

Fragen zu Tkinter.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
in meinem code würde ich gern in der angegebenen uhrzeit eine voranstehende null (z.B. bei 03 : 15) mit auslesen.
ich weiß nur überhaupt nicht wie oder ob das überhaupt mit StringVar() geht?

Code: Alles auswählen

import Tkinter
from Tkinter import *
import time
import datetime

ew_fenster = Tkinter.Tk()
ew_fenster.title('DMD-Data.soft')
ew_fenster.geometry('800x500+385+100')
l_ew22 = Tkinter.Label(ew_fenster, text=('Uhrzeit: BEGINN'),font=('Arial', 9, 'bold underline'))
l_ew22.place(relx=.672, rely=.545, anchor="e")
hvar = StringVar()
l_ew23 = Tkinter.Entry(ew_fenster, textvariable=hvar,font=('Arial', 9, 'bold'), width=3, justify='center')
l_ew23.place(relx=.58, rely=.59, anchor="w")
l_ew24 = Tkinter.Label(ew_fenster, text=":",font=('Arial', 9, 'bold'))
l_ew24.place(relx=.612, rely=.59, anchor="w")
mvar = StringVar()
l_ew25 = Tkinter.Entry(ew_fenster, textvariable=mvar,font=('Arial', 9, 'bold'), width=3,justify='center')
l_ew25.place(relx=.63, rely=.59, anchor="w")

def auslesen_Datum_beginn():

    current = (time.strftime("%H:%M:%S"))
    a_stunde = int(datetime.datetime.strptime(current, '%H:%M:%S').strftime('%H'))
    b_minute = int(datetime.datetime.strptime(current, '%H:%M:%S').strftime('%M'))
    stunde = '%02d' % a_stunde
    minute = '%02d' % b_minute
    hvar.set(stunde)
    mvar.set(minute)

b_ew4 = Tkinter.Button(ew_fenster, text=('Aktuelle Zeit auswaehlen'), width=20, relief="raised", borderwidth=3, fg='#000000', justify='center', command=auslesen_Datum_beginn)
b_ew4.place(relx=.72, rely=.645, anchor="e")

def speichern_Beginn():
    stunde_Beginn = int(hvar.get())
    minute_Beginn = int(mvar.get())
    print stunde_Beginn
    print minute_Beginn

b_ew5 = Tkinter.Button(ew_fenster, text=('Speichern'), width=13, relief="raised", borderwidth=3, fg='#000000', justify='center', command=speichern_Beginn)
b_ew5.place(relx=.9, rely=.59, anchor="e")
ew_fenster.mainloop()
Zuletzt geändert von Anonymous am Montag 25. Januar 2016, 11:57, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@DMD-OL
Vielleicht verstehe ich jetzt auch einfach Dein Problem noch nicht richtig... Ich würde intern mit Stunden und Minuten als Zahlen umgehen. Und dort, wo sie ausgegeben werden, setzt Du halt die führende Null davor. Und dafür gibt es ja einige Möglichkeiten:

Code: Alles auswählen

>>> now = datetime.datetime.now()
>>> now.strftime('%M')
'07'
>>> '{:02d}:{:02d}'.format(now.hour, now.minute)
'06:07'
>>> '{now.hour:02d}:{now.minute:02d}'.format(now=now)
'06:07'
>>> '{:%Y.%m.%d %H:%M}'.format(now)
'2016.01.25 06:07'
>>> '{:%H:%M}'.format(now)
'06:07'
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: schmeiß den *-import raus, Du verwendest ihn zum Glück eh nicht. Du solltest dringend etwas an Deinen Variablennamen machen, weißt Du auf Anhieb was l_ew23 ist? Das auslesen_Datum_beginn ist reichlich umständlich: warum erst die Zeit in einen String umwanden, den wieder zu parsen um dann daraus wieder einen String zu machen? Benutze kein "place" sondern lass Tk die richtige Position finden. Je nach System und Bildschirmauflösung kommt dabei nämlich was unbenutzbares raus.
Zum Problem: ich verstehe nicht, wo da eins sein sollte. Beim Ausgeben gibst Du die 0 mit an und beim Einlesen ist es doch egal.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

ich möchte eine uhrzeit auslesen.
wenn ich aber die null nicht mit auslesen in den std, habe ich das problem, daß ich
bei eingabe von 02 die null weggelassen wird und bei eingabe von 021 die stunden als 21 uhr und nicht als 02 uhr
gespeichert werden :(
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@ DMD-OL: was soll denn 021 für eine Uhrzeit sein? Für mich wäre naheliegend, das als 21Uhr zu interpretieren.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

kann man den auch die nullstellen aus einem entry auslesen oder net?
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@DMD-OL
Vielleicht solltest Du einmal genau erklären, wie Du Dir die Eingabe einer Uhrzeit vorstellst. Was hast Du vor, was erwartest Du für Eingaben und wie möchtest Du diese interpretieren?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten