You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:15:05