标签没有出现在Python Tkinter中

时间:2017-07-31 20:09:36

标签: python tkinter

我正在尝试在页面上打印标签以确认玩家'名称和角色。我这样做的代码如下所示:

AlivePlayers

foobar应该是一个自定义对象类型的数组,如我附加的代码的第1部分和第2部分所定义。没有错误发生,但标签根本不会弹出。我在结果中寻找的一个例子是:Bob警长(再次,作为Tkinter上的标签)。

Full code here

编辑:截至2017年8月2日,我不得不完全重写代码,我得到了我想要的东西(有点)

3 个答案:

答案 0 :(得分:0)

实际上,循环没有进入,因为您使用的是本地AlivePlayers列表,您必须使用python global关键字才能访问全局AlivePlayers ,请看这个链接:Using global variables in a function other than the one that created them

答案 1 :(得分:0)

你在这里使用StringVar()没有任何结果,因为你不能保留var以供以后使用 - 我怀疑你的问题是由于这些未引用的vars被垃圾收集而没有留下任何东西要显示的标签。 (垃圾收集一般与Tkinter很奇怪,因为嵌入式Tcl / Tk环境中实际存在许多对象,Python无法判断它们是否被使用。)

创建标签时,请尝试使用text=phrase代替textvariable=...,以直接指定文字。这显然需要对代码进行一些重新排列,以便phrase存在于创建标签的位置。

答案 2 :(得分:0)

问题不在于for(),因为下面的例子工作正常。是时候对每个代码块做一些测试了。

import sys
if sys.version_info[0] < 3:
    import Tkinter as tk     ## Python 2.x
else:
    import tkinter as tk     ## Python 3.x

root=tk.Tk()

alive_players=["One", "Two", "Three"]
for ctr in range(len(alive_players)):
    bar_nein=tk.StringVar()
    player_label=tk.Label(root, textvariable=bar_nein)
    player_label.pack()
    bar_nein.set(alive_players[ctr])

root.mainloop()