Python为随机选择的单词定义一个动作
我写了一个脚本,从元组中选择一个随机字母,并将其放置在tkinter标签中。现在我想为每个字母定义特定的动作,例如,Python为随机选择的单词定义一个动作,python,random,tkinter,Python,Random,Tkinter,我写了一个脚本,从元组中选择一个随机字母,并将其放置在tkinter标签中。现在我想为每个字母定义特定的动作,例如,“E”可能播放一首歌。我怎样才能做到这一点 # -*- coding: cp1252 -*- import pygame import Tkinter as tk from Tkinter import * from functools import partial import random pygame.init() label=tk.Label() label.pack(
“E”
可能播放一首歌。我怎样才能做到这一点
# -*- coding: cp1252 -*-
import pygame
import Tkinter as tk
from Tkinter import *
from functools import partial
import random
pygame.init()
label=tk.Label()
label.pack()
def knopf(label):
WORDS=("A", "B", "C", "D", "E")
label['text']=random.choice(WORDS)
button=tk.Button(text='Knopf', command=partial(knopf, label))
button.pack()
mainloop()
我试着像亚当·斯密那样做,但我总是出错
# -*- coding: cp1252 -*-
import Tkinter as tk
from Tkinter import *
from functools import partial
import random
import pygame
pygame.init()
label=tk.Label()
label.pack()
def knopf(label):
def do_a(): pass
def do_b(): pass
def do_c(): pass
def do_d(): pass
def do_e(): print("E")
WORDS={"A":do_a, "B":do_b, "C":do_c, "D":do_d, "E":do_e}
choice = random.choice(WORDS)
label['text']=choice
WORDS[choice]()
button=tk.Button(text='Knopf', command=partial(knopf, label))
button.pack()
mainloop()
下面是错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
File "C:\Python27\tester.py", line 20, in knopf
choice = random.choice(WORDS)
File "C:\Python27\lib\random.py", line 273, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
KeyError: 3
为每个函数编写一个函数,并使用字典分派到各个函数,如下面的
WORDS[choice]()
def knopf(label):
def do_a(): pass
def do_b(): pass
def do_c(): pass
def do_d(): pass
def do_e(): play_song()
WORDS={"A":do_a, "B":do_b, "C":do_c, "D":do_d, "E":do_e}
choice = random.choice(list(WORDS)) # make the choice
label['text']=choice # set the label
WORDS[choice]() # do the action
为每个函数编写一个函数,并使用字典分派到各个函数,如下面的
WORDS[choice]()
def knopf(label):
def do_a(): pass
def do_b(): pass
def do_c(): pass
def do_d(): pass
def do_e(): play_song()
WORDS={"A":do_a, "B":do_b, "C":do_c, "D":do_d, "E":do_e}
choice = random.choice(list(WORDS)) # make the choice
label['text']=choice # set the label
WORDS[choice]() # do the action
例如,如果“E”是单词中的一个字母,那么你播放一首歌?我的意思是,当random.choice选择“E”作为例子时,我播放一首歌。因此,我为单词中的每个字母定义了一个操作。要修复您的上一个错误,请将
random.choice(WORDS)
替换为random.choice(WORDS.keys())
,或random.choice(list(WORDS))
,如@AdamSmith的解决方案中所述。例如,如果“E”是单词中的一个字母,那么您就播放一首歌?我的意思是,当random.choice选择“E”作为例子时,我播放一首歌。因此,我为单词中的每个字母定义了一个操作。要修复上一个错误,请将random.choice(单词)
替换为random.choice(单词)()
,或random.choice(单词列表))
如@AdamSmith的解决方案所示。@msw感谢提供更具描述性的文本:)非常感谢提供有用的答案:D@msw谢谢你提供更具描述性的文字:)非常感谢你提供了有用的答案:D