gpt4 book ai didi

python - 更改标签文本 tkinter

转载 作者:行者123 更新时间:2023-11-30 22:41:56 25 4
gpt4 key购买 nike

我从 usingpython.com 获得了这段代码,它是“输入颜色而不是单词”game .

我正在使用此代码构建该游戏的改进版本,但出现了问题,我不知道为什么。

所以,我想在倒计时达到 0 时将单词所在的标签(名为“标签”)更改为“游戏结束!你的分数是 bla bla bla”。所以,我这样做了(我做了什么)添加的只是最后两行):

def nextColour():

#use the globally declared 'score' and 'play' variables above.
global score
global timeleft

#if a game is currently in play...
if timeleft > 0:

#...make the text entry box active.
e.focus_set()

#if the colour typed is equal to the colour of the text...
if e.get().lower() == colours[1].lower():
#...add one to the score.
score += 1

#clear the text entry box.
e.delete(0, tkinter.END)
#shuffle the list of colours.
random.shuffle(colours)
#change the colour to type, by changing the text _and_ the colour to a random colour value
label.config(fg=str(colours[1]), text=str(colours[0]))
#update the score.
scoreLabel.config(text="Score: " + str(score))

elif timeleft == 0:
ĺabel.config(text="Game Over! Your score is: " + score)

这不起作用。当倒计时达到 0 时,游戏什么也不做并停止。

我在想是否可以用 while 循环来做到这一点......

最佳答案

更新小部件值

参见this answer了解更多详情。

您可以使用其textvariable“动态”更改标签小部件的文本值带有 StringVar 的选项对象, 带有 .configure() Label的方法目的。正如上面的答案中提到的,.configure()该方法的优点是减少了一个需要跟踪的对象

textvariableStringVar :

# Use tkinter for Python 3.x
import Tkinter as tk
from Tkinter import Label

root = tk.Tk()

# ...
my_string_var = tk.StringVar(value="Default Value")

my_label = Label(root, textvariable=my_string_var)
my_label.pack()

#Now to update the Label text, simply `.set()` the `StringVar`
my_string_var.set("New text value")

.configure()

# ...

my_label = Label(root, text="Default string")
my_label.pack()

#NB: .config() can also be used
my_label.configure(text="New String")

参见effbot.org了解更多详情。

调试检查

在不查看所有代码的情况下,我还建议检查下面列出的各种其他问题以查找可能的原因。为了扩展您的评论(在这篇文章中),程序无法按预期“工作”的原因可能有多种:

  • 该节目从未进入决赛if block ( if timeleft == 0 ),所以 .config方法没有机会更新变量
  • 全局变量timeleft确实达到0 ,但在迭代之后,它会增加到 0 以上并重新输入第一个 if block ( if timeleft>0 ),覆盖 .config()你想要的。
  • 代码的另一部分可能正在调用 .config()在您的小部件上并覆盖您所需的更改

规划您的 GUI

为了防止这些事情发生,我强烈建议退后一步,拿一些笔和纸并考虑应用程序的整体设计。具体问问自己:

  • 用户如何与此小部件交互?哪些操作/事件会导致此小部件发生变化?
  • 考虑这些事件的所有组合,并问问自己这些事件是否相互冲突。

还可以考虑为应用程序绘制一个流程图,从用户启动应用程序到关闭应用程序之前可以采取的可能路径,确保流程中的 block 不会相互矛盾。

最后,还要看看 Model-View-Controller用于良好应用程序设计的架构(及其 variants )

关于python - 更改标签文本 tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com