Ich möchte eine Zeichenfolge von Buchstaben eins für jedes Mal, um Benutzer zu bitten, klicken, und das Spiel wird nur fortgesetzt, wenn Benutzer die richtige Taste drücken.Python tkinter Eingabeaufforderung
Ich habe Probleme mit der Taste drücken Teil. Ich möchte den Text auf der Schaltfläche abrufen und testen, ob er mit dem Eingabeaufforderungsbuchstaben übereinstimmt. Wenn er mit dem Eingabe-Widget übereinstimmt, wird der nächste Buchstabe angezeigt, andernfalls bleibt er einfach ruhig.
Ich importierte zufällig, um die Buchstaben zu mischen, damit es jedes Mal verschiedene Buchstaben erzeugt. Ich habe die random.shuffle(alist)
nicht hinzugefügt, weil es nicht funktioniert.
hier ist mein Code:
from tkinter import *
from tkinter.ttk import *
import random
import tkinter
class KeyboardGame:
def __init__(self):
window = Tk()
window.title('haha')
self.value = StringVar()
self.value.set('click on any key to start...')
btm_frame = Frame(window, relief=RAISED)
entry = Entry(window, text=self.value)
entry.grid(row=0, column=0, padx=40, pady=5, sticky='EW')
for i in ['ixnsywfhze', 'uobpqgtav', 'lmjkcdr']:
frame1 = Frame(btm_frame)
for j in i:
button = Button(frame1, text=j, command=self.game)
button.pack(side=LEFT)
frame1.pack(padx=2, pady=2)
btm_frame.grid(row=1, column=0, padx=5, pady=5)
window.mainloop()
def game(self):
n = 0
alist = ['h', 'c', 'p', 'e', 'm', 'n', 'd']
self.value.set(alist[n])
while button['text'] != alist[n]:
self.value.set(alist[n])
n += 1
KeyboardGame()
Hallo Billal, danke für die Probleme lösen. Ich muss auch die Tasten quadratisch aussehen lassen und ich habe versucht, die Höhe und Breite einzustellen, aber es funktioniert nicht. Könntest du mir dabei helfen? – chrisgjh
Sie können (wie Sie es taten) 3 separate Frames erstellen und die Buttons usign 'grid()' anstelle von 'pack()' hinzufügen. Definieren Sie für jeden Frame seine Zeilen (eine Zeile pro Frame) und Spalten (gleich der Anzahl der 'j's in Ihrem Code), um das Gewicht gleich 1 zu haben. Stellen Sie natürlich die' width' und 'height' von jede Taste. Es muss funktionieren. –