我试图用Python和Tkinter构建一个非常简单的程序,允许用户通过键盘输入人名,然后命令一个按钮从列表中随机选择一个人,并将其显示在tk.Label
对象中
我的问题是,一旦运行root.mainloop()
,我就可以向列表中添加名称,但列表不会用新名称更新
这是Tkinter初始化的主代码
import tkinter as tk
from tkinter import filedialog, Text
import random
root = tk.Tk()
root.title('Millor persona del moment')
root.geometry("500x200")
root.configure(bg='black')
peopleList = []
tk.Label(root, text="Insertar participante: ",fg="#ff007f", bg='black').grid(row=0)
e1 = tk.Entry(root)
e1.grid(row=0, column=1)
addButton = tk.Button(root, text='Añadir', padx=10, pady=5, fg="#ff007f", bg='black', command=addPerson)
addButton.grid(row=0, column=2)
while peopleList:
turnButton = tk.Button(root, text='Saca Tema', padx=10, pady=5, fg="#ff007f", bg='black', command=wordTurn(peopleList))
turnButton.grid(row=1, column=0)
nom = tk.StringVar()
nom.set('Comencem')
personSpeaking = tk.Label(root, textvariable=nom,fg="#ff007f", bg='black')
personSpeaking.grid(row=1, column=1)
root.mainloop()
这些是我使用的函数
def addPerson():
peopleList.append(e1.get())
e1.delete(0,'end')
def wordTurn(peopleList):
person = random.choice(peopleList)
peopleList.remove(person)
nom.set(person)
command=wordTurn(peopleList))
在按下按钮时调用wordTurn的返回值,该值为None,应该会引发错误。改用command=lambda peopleList=peopleList: wordTurn(peopleList))
相关问题 更多 >
编程相关推荐