微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

全局变量未定义?无法获取标签以显示函数中的全局变量

如何解决全局变量未定义?无法获取标签以显示函数中的全局变量

这是我正在学习的一个小程序,它是一个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分配结果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。