Python Forum
[Tkinter] Trying to display a changing variable
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter] Trying to display a changing variable
#1
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()
Reply
#2
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:
Reply
#3
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()
Reply
#4
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?
Reply
#5
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()?
Reply
#6
I have one while loop that is meant to break when a condition is met (for finding the least common multiple of a number).
Reply
#7
i think it would be helpful to see your entire code
Recommended Tutorials:
Reply
#8
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.
Reply
#9
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.
Reply
#10
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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Trying to display a variable in a label Jordansonatina 2 17,676 Oct-31-2019, 06:28 PM
Last Post: Jordansonatina
  Display and update the label text which display the serial value jenkins43 5 8,992 Feb-04-2019, 04:36 AM
Last Post: Larz60+
  Display more than one button in GUI to display MPU6000 Sensor readings barry76 4 3,835 Jan-05-2019, 01:48 PM
Last Post: wuf

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020