Posts: 7
Threads: 2
Joined: Aug 2017
Aug-06-2017, 04:48 AM
(This post was last modified: Aug-06-2017, 04:49 AM by AnonymousNobody.)
I have been trying to create a tkinter display of a variable that changes semi-regularly, but I cannot seem to get it to update regardless of what I try.
I have tried config(), StringVar(), and global.
#removed code and comments
from tkinter import ttk
root = Tk()
L = Label(root, justify = LEFT)
L.pack()
V = StringVar()
L['textvariable'] = V
V.set('Test')
#more removed code used for defining Lvar
def function():
if condition True:
#code for defining Lvar and X (wait time) removed to not have over 200 lines listed
V.set(Lvar)
#L.config(text = '{}'.format(Vortoj))
root.after(X, function)
function()
root.mainloop()
Posts: 5,151
Threads: 396
Joined: Sep 2016
the way you are doing the StringVar is correct. I suspect it is due to your root.after() condition?
import tkinter as tk
import random
root = tk.Tk()
L = tk.Label(root, justify = 'left')
L.pack()
V = tk.StringVar()
L['textvariable'] = V
V.set('Test')
def set_lbl():
V.set(str(random.randint(0,100)))
btn = tk.Button(root, text='change', command=set_lbl).pack()
root.mainloop()
Recommended Tutorials:
Posts: 3,458
Threads: 101
Joined: Sep 2016
The individual parts look fine... except the beginning of your function. If the condition is ever False, then the function would never be scheduled to run again.
Here's the test I ran to play with root.after: >>> import tkinter as tk
>>> root = tk.Tk()
>>> lbl = tk.Label(root, justify=tk.LEFT)
>>> text = tk.StringVar()
>>> lbl["textvariable"] = text
>>> text.set("Test")
>>> lbl.pack()
>>> # "Test" is visible
...
>>> text.set("spam")
>>> # "spam" is now visible
...
>>> def change_text():
... global text
... contents = {"spam": "eggs", "eggs": "foo", "foo": "bar", "bar": "spam"}
... current = text.get()
... text.set(contents[current])
... root.after(10, change_text)
...
>>> change_text()
>>> # text is changing rapidly
...
>>> root.mainloop()
Posts: 7
Threads: 2
Joined: Aug 2017
I have made all tkinter related things in my code identical to what you (each) said, but it is not working (although if I use all of your code, it does). I think the problem is in the function, is it okay to use arguments in it?
Posts: 3,458
Threads: 101
Joined: Sep 2016
Aug-08-2017, 07:15 PM
(This post was last modified: Aug-08-2017, 07:15 PM by nilamo.)
Can root.after pass arguments? I don't know, before that example, I never used it.
http://effbot.org/tkinterbook/widget.htm...ter-method
Quote:after(delay_ms, callback=None, *args)
Registers an alarm callback that is called after a given time. This method registers a callback function that will be called after a given number of milliseconds. Tkinter only guarantees that the callback will not be called earlier than that; if the system is busy, the actual delay may be much longer.The callback is only called once for each call to this method. To keep calling the callback, you need to reregister the callback inside itself
Emphasis mine. So it isn't guaranteed to run at exactly the time you pass it. Do you have an infinite loop anywhere? Or anything that would hang the main thread, like time.sleep()?
Posts: 7
Threads: 2
Joined: Aug 2017
I have one while loop that is meant to break when a condition is met (for finding the least common multiple of a number).
Posts: 5,151
Threads: 396
Joined: Sep 2016
i think it would be helpful to see your entire code
Recommended Tutorials:
Posts: 7
Threads: 2
Joined: Aug 2017
Aug-09-2017, 02:33 AM
(This post was last modified: Aug-09-2017, 02:36 AM by AnonymousNobody.)
Here it is, forgive the majority being not in english.
from datetime import datetime
import time
import math
#https://ssd.jpl.nasa.gov/horizons.cgi?s_time=1#top
#https://ssd.jpl.nasa.gov/sbdb.cgi
#WolframAlpha
#Wikipedia
import tkinter as tk
root = tk.Tk()
lbl = tk.Label(root, justify=tk.LEFT)
text = tk.StringVar()
lbl["textvariable"] = text
text.set("Test")
lbl.pack()
moduloUnua = ['0']
moduloDua = ['0']
Praviganto1 = 0
Praviganto2 = 30.09
ĈuFaruMonaton = 0
Montru = 5
PliĜustigo = 0
Unikso = None
Komencado = input('Ĉu vi volas komencigi la programon? ')
if Komencado in ('Jes', 'jes', 'okej', 'Okej'):
Loko = input('De kie vi volas vidi la dekuman tempon kaj tagon? ')
if Loko in ('La Tero', 'la tero', 'ltero', 'LTero', 'Ltero', '399', '350'):
JaroGregorie = 1792
MonatoGregorie = 9
TagoGregorie = 22
UTCa_horoj = 0
UTCa_minutoj = 0
UTCa_s = 0
UTCa_ms = 0
Enŝovo = 1
NeenŝovaLongo = 365
UnuaJararaLongo = 4
DuaJararaLongo = 128
MilisekundojPerTagumo = 86400000
PliĜustigo = math.floor(int(input('Kiom da ciferoj post la punkto de la milona tago vi volas? ')))
# https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
Montru = input('Kiom da linioj vi volas rigardi? ')
if Montru in ('5', 'kvin', 'Kvin', 'KVin', 'KVIn', 'KVIN'):
Montru = 5
if Montru in ('1', 'unu', 'un', 'Unu', 'Un', 'UNu', 'UN', 'UNU'):
Montru = 1
if Montru in ('2', 'du', 'Du', 'DU'):
Montru = 2
if Montru in ('3', 'tri', 'Tri', 'TRi', 'TRI'):
Montru = 3
if Montru == ('4', 'kvar', 'Kvar', 'KVar', 'KVAr', 'KVAR'):
Montru = 4
if Montru == 1:
Kio = input('Ĉu vi volas la kutima aŭ la nekutima linion? ')
else:
Longo = int(input('Ĉu vi volas rigardi la tempon kaj tagon se la tagumo estus malpli longa, pli longa, aŭ kutime longa? Estos (ankaŭ) kutime longa iel. '))
Temploko = int(input('Laŭ kio tempzono la tere vi volas vidi la dekuman tempon kaj tagon? '))
Loko = 'La Tero'
KiamEnŝoviguJaron = 0
JarDekonaLongo = 40
DekaJardekonaLongo = 5
ĈuFaruMonaton = 1
MonataLongo = 30
FinaMonataLongo = 5
Praviganto1 = 27
if Loko in ('La Luno', 'la luno', 'lluno', 'LLuno', 'Lluno', '301'):
Loko = input('Ĉu vi volas rigardi la tempon kaj tagon vere laŭ la luno? ')
if Loko in ('Jes', 'jes', 'okej', 'Okej') or ('Jes', 'jes', 'okej', 'Okej') in Loko:
JaroGregorie = 1792
MonatoGregorie = 9
TagoGregorie = 22
UTCa_horoj = 0
UTCa_minutoj = 0
UTCa_s = 0
UTCa_ms = 0
Enŝovo = 1
NeenŝovaLongo = 365
UnuaJararaLongo = 4
DuaJararaLongo = 128
MilisekundojPerTagumo = 86400000
KiamEnŝoviguJaron = 0
JarDekonaLongo = 40
DekaJardekonaLongo = 5
ĈuFaruMonaton = 1
MonataLongo = 30
FinaMonataLongo = 5
Temploko = int(input('Laŭ kio tempzono la tere vi volas vidi la dekuman tempon kaj tagon? '))
else:
JaroGregorie = 1792
MonatoGregorie = 9
TagoGregorie = 1
UTCa_horoj = 6
UTCa_minutoj = 26
UTCa_s = 0#eble ne
UTCa_ms = 0#eble ne
Enŝovo = 1#?
NeenŝovaLongo = 618#.4136286614534 170 de 411
UnuaJararaLongo = 0#?
DuaJararaLongo = 0#?
MilisekundojPerTagumo = 51028857.792 # 2% de vera tagumo
Temploko = int(input('Laŭ kio tempzono la lune vi volas vidi la dekuman tempon kaj tagon? '))
PliĜustigo = math.floor(int(input('Kiom da ciferoj post la punkto de la centmilona tagumo vi volas? ')))
Montru = input('Kiom da linioj vi volas rigardi? ')
if Montru in ('5', 'kvin', 'Kvin', 'KVin', 'KVIn', 'KVIN'):
Montru = 5
if Montru in ('1', 'unu', 'un', 'Unu', 'Un', 'UNu', 'UN', 'UNU'):
Montru = 1
if Montru in ('2', 'du', 'Du', 'DU'):
Montru = 2
if Montru in ('3', 'tri', 'Tri', 'TRi', 'TRI'):
Montru = 3
if Montru == ('4', 'kvar', 'Kvar', 'KVar', 'KVAr', 'KVAR'):
Montru = 4
if Montru == 1:
Kio = input('Ĉu vi volas la kutima aŭ la nekutima linion? ')
else:
Longo = int(input('Ĉu vi volas rigardi la tempon kaj tagon se la tagumo estus malpli longa, pli longa, aŭ kutime longa? '))
Loko = 'La Luno'
if Loko in ('Marso', 'marso', '499', '450'):
JaroGregorie = 1956
MonatoGregorie = 4
TagoGregorie = 26
UTCa_horoj = 20
UTCa_minutoj = 8
UTCa_s = 46
UTCa_ms = 0
Enŝovo = -1
NeenŝovaLongo = 669
UnuaJararaLongo = 5
moduloUnua = "'1', '3'" # enŝovigas la jaron
DuaJararaLongo = 125
moduloDua = "'0'" # enŝovigas la jaron
MilisekundojPerTagumo = 86400000
PliĜustigo = math.floor(int(input('Kiom da ciferoj post la punkto de la centmilona tagumo vi volas? ')))
Montru = input('Kiom da linioj vi volas rigardi? ')
if Montru in ('5', 'kvin', 'Kvin', 'KVin', 'KVIn', 'KVIN'):
Montru = 5
if Montru in ('1', 'unu', 'un', 'Unu', 'Un', 'UN', 'UNu', 'UNU'):
Montru = 1
if Montru in ('2', 'du', 'Du', 'DU'):
Montru = 2
if Montru in ('3', 'tri', 'Tri', 'TRi', 'TRI'):
Montru = 3
if Montru == ('4', 'kvar', 'Kvar', 'KVar', 'KVAr', 'KVAR'):
Montru = 4
if Montru == 1:
Kio = input('Ĉu vi volas la kutima aŭ la nekutima linion? ')
else:
Longo = int(input('Ĉu vi volas rigardi la tempon kaj tagon se la tagumo estus malpli longa, pli longa, aŭ kutime longa? Estos (ankaŭ) kutime longa iel. '))
Temploko = int(input('Laŭ kio tempzono marse vi volas vidi la dekuman tempon kaj tagon? '))
Loko = 'Marso'
KiamEnŝoviguJaron = 0
JarDekonaLongo = 70
DekaJardekonaLongo = 35
if UnuaJararaLongo > DuaJararaLongo:
UnuaJararaLongo, DuaJararaLongo = DuaJararaLongo, UnuaJararaLongo
if DuaJararaLongo % UnuaJararaLongo == 0:
PlejMalsupraKomunaOblo = DuaJararaLongo
else:
PlejMalsupraKomunaOblo = DuaJararaLongo + 1
AlmenaŭĈiam = 1
while True:
if PlejMalsupraKomunaOblo % UnuaJararaLongo == PlejMalsupraKomunaOblo % DuaJararaLongo == 0:
break
PlejMalsupraKomunaOblo += 1
EnŝovaLongo = Enŝovo + NeenŝovaLongo
TagumojPerUnuaJararo = Enŝovo + UnuaJararaLongo * NeenŝovaLongo
TagumojPerDuaJararo = DuaJararaLongo / UnuaJararaLongo * TagumojPerUnuaJararo - Enŝovo
EpoĥoGregorie = datetime(JaroGregorie, MonatoGregorie, TagoGregorie)
UniksoGregorie = datetime(1970, 1, 1)
Intero = UniksoGregorie - EpoĥoGregorie
TagojInterEpoĥoKajUnikso = Intero.days
Minuss = (UTCa_horoj + UTCa_minutoj + UTCa_s + UTCa_ms) * 1000
msInterEpoĥoKajUnikso = TagojInterEpoĥoKajUnikso * 86400000 - Minuss
TagumojInterEpoĥoKajUnikso = msInterEpoĥoKajUnikso / MilisekundojPerTagumo
def LaTagumero(Komencado, Unikso, Praviganto2, MilisekundojPerTagumo, TagumojInterEpoĥoKajUnikso, TagumojPerUnuaJararo, TagumojPerDuaJararo,
PlejMalsupraKomunaOblo, EnŝovaLongo, NeenŝovaLongo, KiamEnŝoviguJaron, Praviganto1,
JarDekonaLongo, PliĜustigo, DekaJardekonaLongo):
global text
KomplementajTagoj = 5
if Unikso != None:
Dormo = 31
else:
Unikso = time.time() * 1000 - Praviganto2
Tagoj = Unikso / MilisekundojPerTagumo + TagumojInterEpoĥoKajUnikso - Praviganto1 + Temploko * .1
AntaŭUnuaKielero = Tagoj / TagumojPerUnuaJararo
UnuaKielero = math.floor(AntaŭUnuaKielero)
AntaŭDuaKielero = (AntaŭUnuaKielero - UnuaKielero) / TagumojPerDuaJararo * TagumojPerUnuaJararo
DuaKielero = math.floor(AntaŭUnuaKielero)
JarojEnŝovaj = DuaKielero - UnuaKielero
JarojNeenŝovaj = PlejMalsupraKomunaOblo - JarojEnŝovaj
AveraĝaJaro = (JarojEnŝovaj * EnŝovaLongo + JarojNeenŝovaj * NeenŝovaLongo) / PlejMalsupraKomunaOblo
D_1 = Tagoj / AveraĝaJaro
if D_1 < 0:
Jareciganto = -1
else:
Jareciganto = 1
Jaro = math.floor(D_1) + Jareciganto
D_3 = D_1 - Jaro + Jareciganto
JaroDaDuaKielero = str(Jaro % DuaKielero)
JaroDaUnuaKielero = str(Jaro % UnuaKielero)
ĈuEnŝovo = 0
if KiamEnŝoviguJaron == -1: # se aŭ unua aŭ dua veras («OR»)
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = NeenŝovaLongo
if JaroDaUnuaKielero not in (moduloUnua):
KielLongasLaJaro = NeenŝovaLongo
if JaroDaDuaKielero in (moduloDua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaUnuaKielero in (moduloUnua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
Enŝovo = ĈuEnŝovo * EnŝovaLongo
if KiamEnŝoviguJaron == 0: # se unu el du veras («XOR»)
if JaroDaDuaKielero in (moduloDua):
if JaroDaUnuaKielero not in (moduloUnua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaDuaKielero in (moduloDua):
if JaroDaUnuaKielero in (moduloUnua):
KielLongasLaJaro = NeenŝovaLongo
if JaroDaUnuaKielero in (moduloUnua):
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaUnuaKielero not in (moduloUnua):
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = NeenŝovaLongo
Enŝovo = ĈuEnŝovo * EnŝovaLongo
# se la unua el du, aŭ ambaŭ el du, veras
# se la duua el du, aŭ ambaŭ el du, veras
# se ambaŭ el du, aŭ nul el du, veras
LaTagumoj = D_3 * KielLongasLaJaro - Praviganto1
D_4 = LaTagumoj / JarDekonaLongo + 1
JarDekono = math.floor(D_4)
D_5 = D_4 - JarDekono
if JarDekono < 10:
D_6 = D_5 * JarDekonaLongo
if JarDekono > 9:
D_6 = D_5 * (DekaJardekonaLongo + Enŝovo)
TagoDeLaJardekono = math.floor(D_6)
ATagDekono = (D_6 - TagoDeLaJardekono) * 10
TagDekono = math.floor(ATagDekono)
TagMilono = (ATagDekono - TagDekono) * 100
if PliĜustigo < 1:
TagMilono = '{:02.0f}'.format(math.floor(TagMilono))
else:
PliĜustigon = '0{}.{}'.format((PliĜustigo + 3), PliĜustigo)
TagMilono = '{:{}f}'.format(TagMilono, PliĜustigon)
TagMilono = str(TagMilono).replace('.', ',')
if TagoDeLaJardekono == 0:
if JarDekono > 1:
JarDekono -= 1
TagoDeLaJardekono = JarDekonaLongo
if JarDekono == 1:
Jaro -= 1
JarDekono = 10
if KiamEnŝoviguJaron == 0: # se unu el du veras («XOR»)
if JaroDaDuaKielero in (moduloDua):
if JaroDaUnuaKielero not in (moduloUnua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaDuaKielero in (moduloDua):
if JaroDaUnuaKielero in (moduloUnua):
KielLongasLaJaro = NeenŝovaLongo
if JaroDaUnuaKielero in (moduloUnua):
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaUnuaKielero not in (moduloUnua):
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = NeenŝovaLongo
Enŝovo = ĈuEnŝovo * EnŝovaLongo
# se la unua el du, aŭ ambaŭ el du, veras
# se la duua el du, aŭ ambaŭ el du, veras
# se ambaŭ el du, aŭ nul el du, veras
TagoDeLaJardekono = DekaJardekonaLongo + Enŝovo
if JarDekono == 1:
JarDekonoj = 'Unuembro'
elif JarDekono == 2:
JarDekonoj = 'Duembro'
elif JarDekono == 3:
JarDekonoj = 'Triembro'
elif JarDekono == 4:
JarDekonoj = 'Kvarembro'
elif JarDekono == 5:
JarDekonoj = 'Kvinembro'
elif JarDekono == 6:
JarDekonoj = 'Sesembro'
elif JarDekono == 7:
JarDekonoj = 'Sepembro'
elif JarDekono == 8:
JarDekonoj = 'Okembro'
elif JarDekono == 9:
JarDekonoj = 'Naŭembro'
else:
JarDekonoj = 'Dekembro'
if ĈuEnŝovo >= 1:
KomplementajTagoj += Enŝovo
if JarDekono < 10:
if math.floor(LaTagumoj) % 10 == 0:
TagoDeTagDeko = 'Dekdo'
if math.floor(LaTagumoj) % 10 == 1:
TagoDeTagDeko = 'Unudo'
if math.floor(LaTagumoj) % 10 == 2:
TagoDeTagDeko = 'Dudo'
if math.floor(LaTagumoj) % 10 == 3:
TagoDeTagDeko = 'Trido'
if math.floor(LaTagumoj) % 10 == 4:
TagoDeTagDeko = 'Kvardo'
if math.floor(LaTagumoj) % 10 == 5:
TagoDeTagDeko = 'Kvindo'
if math.floor(LaTagumoj) % 10 == 6:
TagoDeTagDeko = 'Sesdo'
if math.floor(LaTagumoj) % 10 == 7:
TagoDeTagDeko = 'Sepdo'
if math.floor(LaTagumoj) % 10 == 8:
TagoDeTagDeko = 'Okdo'
if math.floor(LaTagumoj) % 10 == 9:
TagoDeTagDeko = 'Naŭdo'
else:
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj):
if math.floor(LaTagumoj) % 10 == 0:
TagoDeTagDeko = 'Dekdo'
if math.floor(LaTagumoj) % 10 == 1:
TagoDeTagDeko = 'Unudo'
if math.floor(LaTagumoj) % 10 == 2:
TagoDeTagDeko = 'Dudo'
if math.floor(LaTagumoj) % 10 == 3:
TagoDeTagDeko = 'Trido'
if math.floor(LaTagumoj) % 10 == 4:
TagoDeTagDeko = 'Kvardo'
if math.floor(LaTagumoj) % 10 == 5:
TagoDeTagDeko = 'Kvindo'
if math.floor(LaTagumoj) % 10 == 6:
TagoDeTagDeko = 'Sesdo'
if math.floor(LaTagumoj) % 10 == 7:
TagoDeTagDeko = 'Sepdo'
if math.floor(LaTagumoj) % 10 == 8:
TagoDeTagDeko = 'Okdo'
if math.floor(LaTagumoj) % 10 == 9:
TagoDeTagDeko = 'Naŭdo'
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj + 1):
TagoDeTagDeko = 'Festo de Virto'
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj + 2):
TagoDeTagDeko = 'Festo de Genio'
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj + 3):
TagoDeTagDeko = 'Festo de Laboro'
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj + 4):
TagoDeTagDeko = 'Festo de Opinio'
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj + 5):
TagoDeTagDeko = 'Festo de Rekompenco'
if TagoDeLaJardekono < (DekaJardekonaLongo - KomplementajTagoj + 6):
TagoDeTagDeko = 'Festo de Libereco/Revolucio'
if Longo == 1 or Longo == -1:
PliLonga = JarDekonaLongo + 10 * Longo
if (math.floor(PliLonga / 10)) * 10 >= (JarDekonaLongo + 5):
PliLonga = (math.ceil(PliLonga / 10)) * 10
if ĈuFaruMonaton != 0:
F_4 = LaTagumoj / MonataLongo + 1
Monato = math.floor(F_4)
F_5 = F_4 - Monato
if Monato < 13:
F_6 = F_5 * MonataLongo
else:
F_6 = F_5 * (FinaMonataLongo + Enŝovo)
M_Tago = math.floor(F_6)
if M_Tago == 0:
if Monato > 1:
Monato -= 1
M_Tago = MonataLongo
if Monato == 1:
Jaro -= 1
Monato = 13
if KiamEnŝoviguJaron == 0: # se unu el du veras («XOR»)
if JaroDaDuaKielero in (moduloDua):
if JaroDaUnuaKielero not in (moduloUnua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaDuaKielero in (moduloDua):
if JaroDaUnuaKielero in (moduloUnua):
KielLongasLaJaro = NeenŝovaLongo
if JaroDaUnuaKielero in (moduloUnua):
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = EnŝovaLongo
ĈuEnŝovo = 1
if JaroDaUnuaKielero not in (moduloUnua):
if JaroDaDuaKielero not in (moduloDua):
KielLongasLaJaro = NeenŝovaLongo
Enŝovo = ĈuEnŝovo * EnŝovaLongo
# se la unua el du, aŭ ambaŭ el du, veras
# se la duua el du, aŭ ambaŭ el du, veras
# se ambaŭ el du, aŭ nul el du, veras
M_Tago = FinaMonataLongo + Enŝovo
if Monato == 1:
Monatoj = 'Vendemiero'
elif Monato == 2:
Monatoj = 'Brumero'
elif Monato == 3:
Monatoj = 'Frimero'
elif Monato == 4:
Monatoj = 'Nivozoo'
elif Monato == 5:
Monatoj = 'Pluviozo'
elif Monato == 6:
Monatoj = 'Ventozo'
elif Monato == 7:
Monatoj = 'Ĝerminalo'
elif Monato == 8:
Monatoj = 'Florealo'
elif Monato == 9:
Monatoj = 'Prerialo'
elif Monato == 10:
Monatoj = 'Mesidoro'
elif Monato == 11:
Monatoj = 'Termidoro'
elif Monato == 12:
Monatoj = 'Fruktidoro'
else:
Monatoj = 'Komplementaj Tagoj'
Jaro = '{:+d}'.format(Jaro)
Templokon = '{:+d}'.format(Temploko)
NulaVico = (' {}, sed ankaŭ {}'.format(Loko, Templokon))
UnuaVico = (' Jar-dekona Kalendaro: {}, {} {} {} je {},{}'.format(TagoDeTagDeko, TagoDeLaJardekono, JarDekonoj, Jaro, TagDekono, TagMilono))
DuaVico = 'Neniom'
if -1 < Longo < 1:
if ĈuFaruMonaton != 0:
DuaVico = (' Jar-tridekona Kalendaro: {}, {} {} {} je {},{}'.format(TagoDeTagDeko, M_Tago, Monatoj, Jaro, TagDekono, TagMilono))
#else:
#DuaVico = (' Jar-dekona Kalendaro Usonane: {}, {} {} {} je {},{},{}'.format(TagoDeTagDeko, TagoDeLaSemajno, JarDekonoj, Jaro, Horoj, Minutoj, Sekundoj))
if Longo == 1:
if ĈuFaruMonaton != 0:
DuaVico = (' Jar-dekona Kalendaro: {}, {} {} {} je {},{}'.format(TagoDeTagDeko, M_Tago, Monatoj, Jaro, AliTagDekono, AliTagMilono))
if Longo == -1:
DuaVico = (' Jar-dekona Kalendaro: {}, {} {} {} je {},{}'.format(TagoDeTagDeko, M_Tago, Monatoj, Jaro, AliTagDekono, AliTagMilono))
if Montru == 4:
Vortoj = '{}\n\n{}\n{}'.format(NulaVico, UnuaVico, DuaVico)
if Montru == 5:
Vortoj = '{}\n\n{}\n{}\n'.format(NulaVico, UnuaVico, DuaVico)
if Montru == 3:
Vortoj = '{}\n{}\n{}'.format(NulaVico, UnuaVico, DuaVico)
if Montru == 2:
Vortoj = '{}\n{}'.format(UnuaVico, DuaVico)
if Montru == 1:
if -2 < Kio < 2:
Vortoj = '{}'.format(UnuaVico)
else:
Vortoj = '{}'.format(DuaVico)
Dormo = int(30 - Unikso + time.time() * 1000 + Praviganto2)
if Dormo < 0:
Dormo = 0
if Dormo > 30:
Dormo = 30
text.set(Vortoj)
root.after(Dormo, LaTagumero, Komencado, Unikso, Praviganto2, MilisekundojPerTagumo, TagumojInterEpoĥoKajUnikso, TagumojPerUnuaJararo, TagumojPerDuaJararo,
PlejMalsupraKomunaOblo, EnŝovaLongo, NeenŝovaLongo, KiamEnŝoviguJaron, Praviganto1,
JarDekonaLongo, PliĜustigo, DekaJardekonaLongo)
LaTagumero(Komencado, Unikso, Praviganto2, MilisekundojPerTagumo, TagumojInterEpoĥoKajUnikso, TagumojPerUnuaJararo, TagumojPerDuaJararo,
PlejMalsupraKomunaOblo, EnŝovaLongo, NeenŝovaLongo, KiamEnŝoviguJaron, Praviganto1,
JarDekonaLongo, PliĜustigo, DekaJardekonaLongo)
root.mainloop() I know there are better ways to do the typo-proofing (and probably the other contents), but would like to change that later. It is meant to be a custom (with choices for predefined calendars) multilingual calendar creator eventually. Would kivy or pygame or pyglet be a better choice? I previously used autohotkey and not python for this, but it was very buggy.
Posts: 3,458
Threads: 101
Joined: Sep 2016
I added a call to print(), so the top of the callback function looks like this: def LaTagumero(Komencado, Unikso, Praviganto2, MilisekundojPerTagumo, TagumojInterEpoĥoKajUnikso, TagumojPerUnuaJararo, TagumojPerDuaJararo,
PlejMalsupraKomunaOblo, EnŝovaLongo, NeenŝovaLongo, KiamEnŝoviguJaron, Praviganto1,
JarDekonaLongo, PliĜustigo, DekaJardekonaLongo):
global text
print("start callback...") After answering a few questions (I used jes, 350, 2, 2, 2, 2), it stared printing that callback repeatedly, but no change was visible. So your root.after() is being called, and you're setting the text, but the new value you're setting the label to is the same as the old value, so it doesn't look like anything's happening.
Posts: 7
Threads: 2
Joined: Aug 2017
I have solved it ☻.
#\snipped/
from tkinter import *
from tkinter import ttk
root = Tk()
Vortojn = Label(root, justify = LEFT)
Vortojn.pack()
V = StringVar()
Vortojn['textvariable'] = V
V.set('Bonvolu Atendi')
# \snipped/ code for defining variable used
def Update():
while 1:
Vortoj = function_used_to_define_variable(arguments)
V.set(Vortoj)
root.update()
root.after(20, Update)
root.mainloop() https://gordonlesti.com/use-tkinter-without-mainloop/ helped a lot.
|