Ini adalah aplikasi yang menanyakan soal matematika dan pengguna memasukkan jawaban dalam kotak teks sebagai bilangan bulat, dan tombol submitbtn
memverifikasi apakah itu benar atau salah. Saya mengikat tombol keyboard f
ke fungsi yang berjalan dengan menekan tombol submitbtn
, yang berfungsi dengan baik, tetapi kunci f
ditambahkan ke kotak teks setelah jawaban pengguna sebelum dikirimkan dan memberikannya sebagai jawaban yang salah.
Kolom tulisan
text_Input = StringVar
txtbox = Entry(font=('arial',20, BOLD), textvariable=text_Input)
txtbox.grid(columnspan = 2, row = 3, pady = 20)
txtbox.focus_set()
Tombol Kirim
submitbtn = Button(text="Submit", padx=10, pady=10, command=lambda:submit(txtbox.get(), y))
Kirim Fungsi
def submit(z, y):
global correct_answer, wrong_answer, submitbtn
y=str(y)
if z==y:
correct_answer+=1
lbl2.configure(text=correct_answer)
else:
wrong_answer+=1
lbl4.configure(text=wrong_answer)
submitbtn.config(state="disabled")
Mengikat
game.bind('f', lambda event: submit(txtbox.get(), y))
#"game" is the name of Tk()
#submit is the function linked to submitbtn
#This works well if I bind it to <Return> (Enter Key)
Keluaran Sebenarnya:
5+8
Pengguna memasukkan: 13
Tekan 'f' untuk mengirimkan jawaban
Jawaban diproses: 13f
Apakah ada cara untuk memproses input kotak teks secara real-time untuk memastikan setiap karakter yang dimasukkan adalah bilangan bulat? Jika pengguna memasukkan apa pun kecuali 0-9, saya ingin pengguna tidak mencatat apa pun di kotak teks.
Juga, saya menonaktifkan
submitbtn
setelah ditekan sekali, tetapi menekan f berulang kali terus menambah variabelcorrect_answer
. Apakah ada cara untuk mengikat kunci kesubmitbtn
yang pada gilirannya akan memanggil fungsisubmit
, alih-alih langsung menghubungkan fungsi kuncif
kesubmit
?
Entry
widget atauText
widget? - person Henry Yik   schedule 13.04.2019