使用Tkinter从列表创建按钮:以列表项为按钮标签
Tkinter按钮标签显示PY_VAR而非卡牌内容的问题解决
我正在用Python 3.10和Tkinter重开发一款卡牌游戏,需要实现每轮动态生成手牌的功能,抽牌数量由drawHandCalc()返回值决定。我想把drawing_deck列表的元素作为手牌按钮的标签,现有代码如下:
drawing_deck = starting_deck random.shuffle(drawing_deck) i = 0 while i < drawHandCalc(): drawnCard = tk.StringVar() drawnCard.set(drawing_deck[i]) print(drawing_deck[i]) handcardVar = Button(root, text=str(drawnCard), padx=30, pady=80) handcardVar.grid(row=3, column=3+i) i += 1
控制台能正常打印drawing_deck[i]的值,但UI中的按钮标签显示为PY_VAR1、PY_VAR2等,请问该问题原因是什么?如何让Tkinter使用drawing_deck列表中的字符串作为按钮标签?
问题原因
你将StringVar对象直接转成字符串赋值给按钮的text参数,此时输出的是该变量对象的内部标识名(如PY_VAR1),而非它存储的实际字符串内容。
解决代码
调用StringVar的.get()方法获取其存储的实际内容,赋值给按钮的text参数即可。修改后的代码如下:
while i < drawHandCalc(): drawnCard = tk.StringVar() drawnCard.set(drawing_deck[i]) print(drawing_deck[i]) handcardVar = Button(root, text=drawnCard.get(), padx=30, pady=80) handcardVar.grid(row=3, column=3+i) i += 1
内容的提问来源于stack exchange,提问作者globuscodingworld
相关产品推荐
相关产品推荐

