我正在尝试在页面上打印标签以确认玩家'名称和角色。我这样做的代码如下所示:
AlivePlayers
foobar
应该是一个自定义对象类型的数组,如我附加的代码的第1部分和第2部分所定义。没有错误发生,但标签根本不会弹出。我在结果中寻找的一个例子是:Bob警长(再次,作为Tkinter上的标签)。
编辑:截至2017年8月2日,我不得不完全重写代码,我得到了我想要的东西(有点)
答案 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()