So tkinter Ich verwende eine Schaltfläche zu erstellen, die aus einer Liste ein zufälliges Element zeigt. Wenn diese Taste gedrückt wird, wird ein neuer Eintrag aus der Liste angezeigt, indem ein Zufallszahlengenerator so lange wiederholt wird, bis eine andere Nummer als die alte Nummer erstellt wird. Da es sich um Schaltflächen handelt, muss die Erstellung einer neuen Nummer eine Funktion sein, und die Schaltfläche selbst ist eine Funktion.Python: Übergeben Sie eine Variable in einem bereits laufenden Funktion
Ich habe festgestellt, dass die Variable für die aktuelle Zufallszahl nicht ordnungsgemäß aktualisiert wird. Der Wert ändert sich global, aber nicht innerhalb der Funktion, die die Schaltfläche enthält. Wenn diese Schaltfläche die Funktion zum Generieren einer neuen Nummer ausführt, wird sie mit der ersten generierten Zahl und nicht mit der vorherigen verglichen.
from tkinter import *
import random
global rnum
def Load():
ListPath = (".\\Lists\\test.txt")
f = open(ListPath, "r")
LineList = f.readlines()
rnum = random.randint(0,(LineList.__len__()-1))
load = Tk()
word = Button(load, text = LineList[rnum], command = lambda: NewRN(rnum, word, LineList), font = ("Calibri", 30))
word.pack()
def NewRN(rnum, word, LineList):
rnumold = rnum
while(rnum == rnumold):
rnum = random.randint(0,(LineList.__len__()-1))
word.config(text = LineList[rnum])
return(rnum)
Load()
Wenn Sie die Taste drücken, gibt es die Möglichkeit, sie das gleiche Element aus der Liste angezeigt wird, als rnum in die Funktion nicht übergeben wird, zurück, sobald es bereits ausgeführt wird.
Hat jemand eine Lösung für dieses Problem? Danke im Voraus.
Es scheint, dass Ihr Code in Load() nur einmal ausgeführt wird, aber es klingt, als ob Sie es wiederholt ausführen möchten. Ist das genau? –
Daran hatte ich nicht gedacht, danke! Ich habe das Problem jetzt gelöst, indem ich eine neue Funktion für jede neue Zufallszahl ausgeführt habe. – Pickselated