Hallo,
Ich möchte einen Test schreiben: zufällige int Zahlen im Intervall 1-9 werden auf einer GUI einzeln, zentriert angezeigt aber in der position wechselnd, in randomisierter Schriftgröße, für 250 ms. Danach hat man für 900ms die Chance, spacebar zu drücken. Drückt man nicht oder während eine 3 kommt kriegt man einen Fehler. Alles endet nach 900 Zahlen.
Ich habe es mit Tkinter probiert aber bin gescheitert - ich weiß nicht, ob ich buttons oder label nehmen sollte, wie man beliebig platzieren kann, und wie man die zeitspanne zum enter drücken implementiert. Kann mir jemand helfen indem er mir entweder nützliche links sendet, oder mir das hinschreibt? Es ist nicht für eine Hausaufgabe sondern rein aus persönlichem interesse
Danke!
Hilfe beim Implementieren eines Tests
Hallo,
Danke für deine Hilfe! ich kriege hierfür "name 'Canvas' is not defined" und weiß nicht warum. Hast du eine Idee?
Danke für deine Hilfe! ich kriege hierfür "name 'Canvas' is not defined" und weiß nicht warum. Hast du eine Idee?
Code: Alles auswählen
import random
def generate_number():
list = ["1","2","3","4","5","6","7","8","9"]
number = random.choice(list)
return number
import tkinter as tk
root = tk.Tk()
canvas = Canvas(root, height=1000, width=1600,bg=grey)
create_text(400,800,text=str(generate_number()))
root.pack()
Canvas kommt wie Tk aus dem Paket tkinter. Es muss also `tk.Canvas` heißen.
Code: Alles auswählen
import random
import tkinter as tk
def generate_number():
return random.randint(1, 9)
def main():
root = tk.Tk()
canvas = tk.Canvas(root, height=1000, width=1600,bg=grey)
text = canvas.create_text(400,800, text=str(generate_number()))
canvas.pack()
root.mainloop()
if __name__ == "__main__":
main()
Danke!
ich habe hiermit gearbeitet und nicht darüber nachgedacht. https://tkdocs.com/tutorial/canvas.html
Ich versuche jetzt die Nummer irgendwo randomisiert aber im zentrum anzuzeigen aber ich weiß nicht, wie das geht. Ich habe das hier probiert und sehe überhaupt nichts.
ich habe hiermit gearbeitet und nicht darüber nachgedacht. https://tkdocs.com/tutorial/canvas.html
Ich versuche jetzt die Nummer irgendwo randomisiert aber im zentrum anzuzeigen aber ich weiß nicht, wie das geht. Ich habe das hier probiert und sehe überhaupt nichts.
Code: Alles auswählen
import random
import tkinter as tk
def generate_number():
return random.randint(1, 9)
def main():
root = tk.Tk()
canvas = tk.Canvas(root, height=1000, width=1600,background='gray75')
text = canvas.create_text(400,800, text=str(generate_number()))
canvas.pack()
# es ist nichts sichtbar
number_display = tk.Label(root,height=100,width=200,text=str(generate_number))
number_display.pack()
root.mainloop()
if __name__ == "__main__":
main()
Ich habe es erst mit tk.Text() probiert, aber es wurde nichts angezeigt.
Code: Alles auswählen
import random
import tkinter as tk
def generate_number():
return random.randint(1, 9)
def main():
root = tk.Tk()
canvas = tk.Canvas(root, height=1000, width=1600,background='gray75')
text = canvas.create_text(400,800, text=str(generate_number()))
canvas.pack()
number_display = tk.Text(root,height=400,width=800)
number_display.pack()
number_display.insert(tk.END, str(generate_number()))
root.mainloop()
if __name__ == "__main__":
main()
- __blackjack__
- User
- Beiträge: 13236
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@dvdllyyy: Ich kann nicht nachvollziehen das beim vorletzten Versuch nichts sichtbar sein soll. Da wird bei mir an der angegebenen Position eine Ziffer angezeigt.
`number_display` macht nicht so wirklich Sinn, vor allem nicht das da eine *andere* Zahl ausgewürfelt wird als die auf dem Canvas (wenn man die Funktion aufrufen würde).
Für das fernere Ziel das im ersten Beitrag beschrieben ist, würde ich den Text auf dem Canvas auch erst einmal leer erstellen und Zufallsposition, -grösse, und Ziffer in einem extra Schritt konfigurieren, denn diesen Schritt muss man ja mehrfach wiederholen. Da wäre das praktischer das in einer eigenen Funktion zu haben.
Bei nicht-trivialen GUI-Programmen muss man die Sprache bis hin zur objektorientierten Programmierung (OOP) können. Also eigene Klassen entwerfen können. Spätestens wenn man nur unter bestimmten Bedingungen auf den Druck der Leertaste reagieren will, braucht man das, weil man sich dann Zustände über Rückrufe hinweg merken und verändern muss. Und das mit den Klassen würde ich empfehlen erst einmal ohne GUI zu lernen, sonst kommt mit GUIs noch die ereignisbasierte Programmierung extra dazu.
`number_display` macht nicht so wirklich Sinn, vor allem nicht das da eine *andere* Zahl ausgewürfelt wird als die auf dem Canvas (wenn man die Funktion aufrufen würde).
Für das fernere Ziel das im ersten Beitrag beschrieben ist, würde ich den Text auf dem Canvas auch erst einmal leer erstellen und Zufallsposition, -grösse, und Ziffer in einem extra Schritt konfigurieren, denn diesen Schritt muss man ja mehrfach wiederholen. Da wäre das praktischer das in einer eigenen Funktion zu haben.
Bei nicht-trivialen GUI-Programmen muss man die Sprache bis hin zur objektorientierten Programmierung (OOP) können. Also eigene Klassen entwerfen können. Spätestens wenn man nur unter bestimmten Bedingungen auf den Druck der Leertaste reagieren will, braucht man das, weil man sich dann Zustände über Rückrufe hinweg merken und verändern muss. Und das mit den Klassen würde ich empfehlen erst einmal ohne GUI zu lernen, sonst kommt mit GUIs noch die ereignisbasierte Programmierung extra dazu.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Ich weiß nicht wie man Bilder hier einfügt, aber ich kriege ein graues Fenster ohne Zahl in der Ecke.
Hier ist der code:
Hier ist der code:
Code: Alles auswählen
import random
import tkinter as tk
def generate_number():
return random.randint(1, 9)
def main():
root = tk.Tk()
canvas = tk.Canvas(root, height=1000, width=1600,background='gray75')
text = canvas.create_text(400,800, text=str(generate_number()))
canvas.pack()
root.mainloop()
if __name__ == "__main__":
main()