python - 为什么我的计时器循环只在 tkinter python 中发生一次?
问题描述
我认为问题在于定时器循环只发生一次。我正在尝试循环乐谱并将其呈现在第二个屏幕上,用新乐谱替换旧乐谱。屏幕显示循环经过的内容,但循环只发生一次。该程序的主要目标是创建 2 个屏幕。第一个屏幕要求输入首字母。当第一个屏幕点击“开始游戏”时,将弹出第二个屏幕。然后第二个屏幕将显示姓名缩写和分数。问题是分数只会循环一次。
这是代码:
import tkinter as tk
from time import sleep
import addscore as a
import numpy as np
#from addscore import AddScore as add
#from addscore import SubstractScore as subtract
#from addscore import GameOver as over
LARGE_FONT=("Verdana", 20)
class App():
def __init__(self):
def RunningScore():
global scoreObject
scoreObject=tk.StringVar()
score=0
scoreObject.set(999)
initial=entry.get()
global top
top=tk.Toplevel(bg='red')
top.geometry('600x800')
frame = tk.Frame(top, bg='gray', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.6, anchor='n')
lbl=tk.Label(frame,textvariable=scoreObject, font=LARGE_FONT)
lbl.place(relx=.47,rely=.5)
lbl3=tk.Label(frame,text=score, font=LARGE_FONT)
lbl3.place(relx=.47,rely=.7)
lbl2=tk.Label(top,text=initial, font=LARGE_FONT)
lbl2.place(relx=.45,rely=.1)
top.after(50,lambda:UpdateScore(lbl3))
frame.tkraise()
top.mainloop()
def UpdateScore(lbl3):
score1=int(scoreObject.get())
print(f'Before call score: {scoreObject.get()}')
print(f'inside update: {score1}')
#score1=a.AddScore(score1)
score1=score1+5
scoreObject.set(score1)
lbl3['text']=score1
print(f'After call score: {scoreObject.get()}')
def LeaderBoard():
top=tk.Toplevel(bg='blue')
top.geometry('500x500')
lbl=tk.Label(top,text="LeaderBoard")
lbl.place(relx=.5,rely=.5)
top.after(5000,lambda:top.destroy())
root=tk.Tk()
canvas=tk.Canvas(root, height=600, width=800)
canvas.pack()
background_image= tk.PhotoImage(file='ncstate.gif')
background_label = tk.Label(root, image=background_image)
background_label.place(relwidth=1, relheight=1)
frame = tk.Frame(root, bg='gray', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.2, anchor='n')
entry="Input Initials"
entry=tk.Entry(frame,textvariable=entry, font=40)
entry.place(rely=0.33, relwidth=0.4, relheight=.5, relx=.2)
inputinitial=tk.Label(frame, text='Input Initials')
inputinitial.place(relx=0.03, relheight=.5, rely=0.33)
startbutton=tk.Button(frame, text="Start Game", command= lambda: RunningScore())
startbutton.place(relx=0.67, rely=0.33, relwidth=.3, relheight=.5)
lbbutton=tk.Button(root, text="Show Leader Board", command=LeaderBoard)
lbbutton.place(rely=.75, relx=.37, relwidth=.25, relheight=.2)
def quit(self):
self.root.destroy()
app = App()
app.mainloop()
解决方案
推荐阅读
- javascript - 如何在 arc.centroid() 上为 D3 和弦图组弧添加标签?
- sql-server - T-SQL GroupBy 具有总计数值和基于数字范围的组平均值
- r - 调整主面板在 Shiny 中的位置
- javascript - 在新标签页中打开链接的按钮
- html - HTML/CSS 中间错误 .hover/nav 错误、@media 错误、nav/aside CIS122
- r - 获取R中括号零的两个值的索引
- python - Doc2vec 仅输出单个文档而不是两个文档向量的数据
- powerbi - Power BI - 参考结果集中的其他行以确定是否显示行
- r - r markdown 未编译
- python - 使用 Python 正则表达式忽略字符串中的 `:`