当前位置: 首页 > 面试题库 >

Python-tkinter:后方法如何使用

阎淮晨
2023-03-14
问题内容

正在将tkinter用于gui,我在使用之后方法时遇到麻烦。目的是使每5秒出现一个随机字母。

这是我的代码:

import random
import time
from tkinter import *


root = Tk()

w = Label(root, text="GAME")
w.pack()

frame = Frame(root, width=300, height=300)
frame.pack()

L1 = Label(root, text="User Name")
L1.pack(side=LEFT)
E1 = Entry(root, bd =5)
E1.pack(side=LEFT)

tiles_letter = ['a', 'b', 'c', 'd', 'e']

while len(tiles_letter) > 0:
    rand = random.choice(tiles_letter)
    tile_frame = Label(frame, text=rand)
    tile_frame.pack()
    frame.after(500)
    tiles_letter.remove(rand)  # remove that tile from list of tiles

root.mainloop()

有人可以帮我吗—问题肯定是frame.after(500):我不确定使用“ frame”是否正确,我也不知道500后面是哪个参数。


问题答案:

您需要给定一个在时间延迟后要调用的函数,作为第二个参数after:

after(delay_ms,callback = None,* args)

注册在给定时间后调用的警报回调。

因此,您真正想要做的是:

tiles_letter = ['a', 'b', 'c', 'd', 'e']

def add_letter():
    rand = random.choice(tiles_letter)
    tile_frame = Label(frame, text=rand)
    tile_frame.pack()
    root.after(500, add_letter)
    tiles_letter.remove(rand)  # remove that tile from list of tiles


root.after(0, add_letter)  # add_letter will run as soon as the mainloop starts.
root.mainloop()

您还需要通过重复调用after回调函数内部来计划要再次调用的函数,因为after仅执行一次给定的函数。文档中也对此进行了说明:

对于此方法的每次调用,该回调仅被调用一次。要继续调用该回调,您需要在自身内部重新注册该回调

请注意,一旦您用完了中的所有条目,您的示例就会引发异常tiles_letter,因此您需要更改逻辑以处理您想要的任何情况。最简单的方法是在的开头添加一个检查,add_letter以确保列表不为空,return即使列表为空:

def add_letter():
    if not tiles_letter:
        return
    rand = random.choice(tiles_letter)
    tile_frame = Label(frame, text=rand)
    tile_frame.pack()
    root.after(500, add_letter)
    tiles_letter.remove(rand)  # remove that tile from list of tiles


 类似资料:
  • 嘿,我是python新手,正在使用tkinter作为我的gui。我在使用“after”方法时遇到问题。目标是每5秒出现一个随机字母。 这是我的代码: 谁能帮帮我吗?问题肯定出在框架上。(500)之后:我不确定使用“frame”是否正确,我不知道500后面的参数是什么。 谢啦

  • 本文向大家介绍python-tkinter之按钮的使用,开关方法,包括了python-tkinter之按钮的使用,开关方法的使用技巧和注意事项,需要的朋友参考一下 具体参考哪位大佬的,记不太清楚了。 直接上代码,大体逻辑是这样的。 说一说我遇到的问题: 我想让这个开始按钮,点击变成开始,再次点击变成结束。 使用上面的方法是失败的,我发现self.B打印出来为空。 是因为后面调用了grid方法导致的

  • 本文向大家介绍python使用Tkinter显示网络图片的方法,包括了python使用Tkinter显示网络图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python使用Tkinter显示网络图片的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 我需要使用Python的tkinter库编写程序。 我的主要问题是我不知道如何创建计时器或类似 的时钟hh:。 我需要它来更新自身(这是我不知道该怎么做的)。 问题答案: 根窗口具有一种称为的方法,该方法可用于安排给定时间段后要调用的函数。如果该函数本身调用,则您已设置了一个自动重复事件。 这是一个工作示例: 请记住,这不能保证该功能将完全按时运行。它仅计划在给定的时间后运行作业。由于

  • 问题内容: 我正在使用Python 3.3和tkinter制作用于行人逃生模拟的GUI界面。 我已经编写了两个模拟程序,它们运行良好。但是,当尝试从主应用程序调用它们时,我陷入了困境。我希望模拟窗口出现在单独的窗口中(创建主窗口的子窗口)。 如何使用tkinter从主应用程序启动子窗口? 问题答案: 您可以通过创建的实例来创建子窗口。有关更多信息,请参见http://effbot.org/tkin

  • 我正在尝试用Python实现方法重载: 但输出是第;同样地: 给予 我该怎么做呢?