Seite 1 von 1

Wie lese ich voranstehende Null in Entry aus?

Verfasst: Montag 25. Januar 2016, 03:17
von DMD-OL
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()

Re: Wie lese ich voranstehende Null in Entry aus?

Verfasst: Montag 25. Januar 2016, 06:36
von mutetella
@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'

Re: Wie lese ich voranstehende Null in Entry aus?

Verfasst: Montag 25. Januar 2016, 07:34
von Sirius3
@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.

Re: Wie lese ich voranstehende Null in Entry aus?

Verfasst: Dienstag 26. Januar 2016, 13:03
von DMD-OL
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 :(

Re: Wie lese ich voranstehende Null in Entry aus?

Verfasst: Dienstag 26. Januar 2016, 13:14
von Sirius3
@ DMD-OL: was soll denn 021 für eine Uhrzeit sein? Für mich wäre naheliegend, das als 21Uhr zu interpretieren.

Re: Wie lese ich voranstehende Null in Entry aus?

Verfasst: Dienstag 26. Januar 2016, 16:33
von DMD-OL
kann man den auch die nullstellen aus einem entry auslesen oder net?

Re: Wie lese ich voranstehende Null in Entry aus?

Verfasst: Dienstag 26. Januar 2016, 16:56
von mutetella
@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?