tkinter - Leerlaufzeit benutzen (für andere Zwecke)

Fragen zu Tkinter.
Antworten
msmn
User
Beiträge: 35
Registriert: Samstag 13. Juli 2019, 07:15

versuche TKinter weiter zu lernen/verinnerlichen/verwenden....

kann man (bzw wie ginge das bitte) innerhalb/während dem "Leerlauf/Wartezeitraum" der mainloop-TKinter-Schleife (insbesondere während zB User-Aktion gemacht wird, also keine Taste/Button gedrückt wird, etc) ...bitte andere Aktionen ablaufen lassen (also Aktionen, welche eigentlich nicht aufgrund einer TKinter-Eingabe gestartet werden), also zB
import tkinter as tk
from functools import partial

def toggle(a):
print ("Button gedrueckt")

def test(b): # <-- so eine Funktion haette ich gerne "bei Leerlauf von root.mainloop" abgearbeitet
for i in range (100):
print(i)

root = tk.Tk()

button = tk.Button(root)
button.config(text=" Button ",command = partial(toggle,"Hallo"))
button.grid()

root.mainloop()
Anmerkung: wenn möglich, möchte ich jedoch "Threads/Threading" tunlichst vermeiden.

Danke für Eure Hilfe
msmn
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das geht per after-Methode, also einem Timer. Ggf zusammen mit https://github.com/fluentpython/asyncio-tkinter um es aus meiner Sicht schicker zu machen, weil du so viel einfacher die potentiell länger laufenden tasks mit einem simplen “await asyncio.sleep()” pausieren lassen kannst, so dass die GUI tut.
msmn
User
Beiträge: 35
Registriert: Samstag 13. Juli 2019, 07:15

danke...könntest Du mir bitte die entsprechenden "after"-Zeilen als Beispiel oben einbringen?
msmn
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dazu haben wir tonnenweise Beispiele hier im Forum, weil das eine absolute Standardfrage ist. Klick dich mal ein bisschen durch das tkinter unterforum.
msmn
User
Beiträge: 35
Registriert: Samstag 13. Juli 2019, 07:15

ok, danke
Antworten