python - 如何在 tkinter 中为我的重试按钮添加功能?
问题描述
我编写了一个代码,它生成两个数字并要求用户计算其总和并输入结果。程序运行良好,但我想要的是添加一个按钮,再次要求用户输入结果并验证。我面临的问题是该条目没有被清除,并且另一个窗口在具有相同条目的原始窗口下方打开。
import tkinter as tk
import random
window = tk.Tk()
content = tk.StringVar()
def startgame():
number1 = random.randint(10, 51)
number2 = random.randint(10, 51)
sum_of_num = number1 + number2
def checkresult():
global content
i = int(content.get())
if i == sum_of_num:
label = tk.Label(window, text = "Correct Result", fg = "blue").pack()
else:
label = tk.Label(window, text = "Incorrect result!! Try again.", fg = "red").pack()
window.title("Number Guessing Game")
label = tk.Label(window, text = "Let's begin the Quiz", fg = "blue").pack()
label = tk.Label(window, text = "---------------------", fg = "blue").pack()
label = tk.Label(window, text = "Given two numbers", fg = "blue").pack()
label = tk.Label(window, text = number1, fg = "blue").pack()
label = tk.Label(window, text = number2, fg = "blue").pack()
label = tk.Label(window, text = "Add these two numbers and enter the result", fg = "blue").pack()
sum_of_numbers = tk.Entry(window, textvariable = content)
sum_of_numbers.pack()
sum_of_numbers.focus_set()
button_to_check_result = tk.Button(window, text="Check whether answer is correct", fg = "red", command = checkresult).pack()
startgame()
button_to_try_again = tk.Button(window, text="Try Again !!", fg = "red", command = startgame).pack()
window.mainloop()
我希望再次清除输入的相同窗口。
解决方案
将整个段定义为一个函数:
label = tk.Label(window, text = "Let's begin the Quiz", fg = "blue").pack()
label = tk.Label(window, text = "---------------------", fg = "blue").pack()
label = tk.Label(window, text = "Given two numbers", fg = "blue").pack()
label = tk.Label(window, text = number1, fg = "blue").pack()
label = tk.Label(window, text = number2, fg = "blue").pack()
label = tk.Label(window, text = "Add these two numbers and enter the result", fg = "blue").pack()
然后将该功能绑定到您计划实现的“重置”按钮。或者,如果您想在用户每次按下“检查”按钮时重置,则可以在 checkresult() 中调用该函数。
本质上,您要做的是在现有标签上显示新标签。
推荐阅读
- html - 如何将主菜单移动到右上角并向下移动到文本?
- java - 您可以在 GCP 上使用 OpenJDK 在 Ubuntu 18.04.3“仿生”上将 rundeck 从 3.0.22 直接升级到 3.2.1 吗?
- git - 通过 scoop 安装的 Windows 上的 git:句柄无效
- flutter - 有没有办法自动滚动到 ListView.builder 中的元素?
- java - Eclipse jxmaps 找不到有效的许可证
- typescript - 如何为扩展简单接口的通用输出一般键入一个类?
- ruby - PowerShell:功能:reduce:如何初始化reduce累加器?
- android - 如何从 Android 10 中的 MediaStore 获取 MediaMetaData,如专辑、曲目、标题、专辑封面等
- vue.js - 响应式图表不受控制地增长
- javascript - jQuery/CreateJS $.ajax“位图未定义”