【问题标题】:I want each letter of my title to appear one by one我希望我的头衔的每个字母都一一出现
【发布时间】:2023-02-24 00:02:17
【问题描述】:

我试图让它每次都添加一个字母。 我有一个可行的方法,但我确信有一种使用 for 循环的更简单的方法。

def set_title():
    global x
    window.after(x,titleset)


def titleset():
    global x
    title_label.config(text="C")
    window.after(x, titleset_a)
def titleset_a():
    global x
    title_label.config(text="CA")
    window.after(x, titleset_e)
def titleset_e():
    global x
    title_label.config(text="CAE")
    window.after(x, titleset_s)
def titleset_s():
    global x
    title_label.config(text="CAES")
    window.after(x, titleset_a2)
def titleset_a2():
    global x
    title_label.config(text="CAESA")
    window.after(x, titleset_r)
def titleset_r():
    global x
    title_label.config(text="CAESAR")
    window.after(x, titleset_101)
def titleset_101():
    global x
    title_label.config(text="CAESAR'")
    window.after(x, titleset_s1)
def titleset_s1():
    global x
    title_label.config(text="CAESAR'S")
    window.after(x, titleset_c2)

<事情还在继续,但这足以让我明白我的观点

【问题讨论】:

  • 欢迎来到堆栈溢出。 “但我确信有一种使用 for 循环的更简单的方法。” - 可以,然后呢你的问题是什么对这个?您是否尝试编写一个 for 循环来解决问题?如果你这样做了,你到底在哪里卡住了?你知道如何编写 for 循环吗?你认为每次循环应该发生什么?
  • 您是否为您的问题做了web searchStackExchange 上有一个似乎是你的答案。

标签: python loops tkinter


【解决方案1】:

这是一个使用 for 循环和 tkinter.after 的示例解决方案

import tkinter as tk


def write_name() -> None:
    global index  # allow this function to update the value of 'index'
    index += 1  # increment the index
    label.config(text=name[0:index])  # update the label
    loop = root.after(250, write_name)  # call this function again after 250mS
    if index == len(name):  # when the entire 'name' string has been written out...
        root.after_cancel(loop)  # stop calling 'write_name'


root = tk.Tk()
name = "CAESAR'S"
index = 0
label = tk.Label(root, text='')  # create an empty label
label.pack()
write_name()  # begin updating the label


if __name__ == '__main__';
    root.mainloop()  # start the app

【讨论】:

    【解决方案2】:

    我的工作代码:

    import tkinter as tk
    from time import sleep
    
    root = tk.Tk()
    
    title = 'CAESAR'S'
    
    for i in range(len(title)):
        root.title(title[:i+1])
        root.update()
        sleep(1)
    

    【讨论】:

    • 请注意:在 tkinter 应用程序中使用 sleep 是个坏主意,因为在 sleeping 时 UI 的其余部分将挂起。最好利用 after 方法,这样 tkinter 事件循环仍然可以运行!
    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 2021-04-19
    • 2021-02-24
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多