问题描述
这是我正在学习的一个小程序,它是一个NPC特性生成器,可以从文本文件中生成随机单词。
我的随机生成器可以工作,但是无法使其正确显示在标签中。我目前已将pertrait设置为global,但似乎没有选择要在标签中显示的变量?我尝试设置StringVar,但似乎也无法正常工作。
import tkinter as tk
from tkinter import font
# Random Personality generation from text list
def gen():
global pertrait
pertrait = print(random.choice(open(
'F:\\Desktop\\python\\RandomGenerator py\\CharTraitList.txt').read(
).split()).strip())
root = tk.Tk()
root.title("NPC Trait Generator")
root.geometry("500x200")
frame = tk.Frame(root)
frame.pack()
# define font
fontStyle = font.Font(family='Courier',size=44,weight='bold')
# background image variable and import
paper = tk.PhotoImage(
file='F:\\Desktop\\python\\RandomGenerator py\\papbckGrd.png')
butQuit = tk.Button(frame,text="Quit",fg="red",command=quit)
butQuit.pack(side=tk.LEFT)
ButGen = tk.Button(frame,text="Generate",command=gen)
ButGen.pack(side=tk.RIGHT)
# Label generation
Trait1 = tk.Label(root,compound=tk.CENTER,text=pertrait,font=fontStyle)
# image=paper) .pack(side="right")
Trait1.pack()
root.mainloop()
解决方法
print()
没有返回值,而您忽略了致电gen()
!
更改:
pertrait = print(random.choice(open(
'F:\\Desktop\\python\\RandomGenerator py\\CharTraitList.txt').read(
).split()).strip())
收件人:
pertrait = random.choice(open(
'F:\\Desktop\\python\\RandomGenerator py\\CharTraitList.txt').read(
).split()).strip()
但是实际上最好避免使用全局方法-使gen()
返回值并为gen()
或pertrait
分配结果