Python 程序在没有错误时创建错误(未定义)

问题描述 投票:0回答:1

由于某种原因,此代码不断出现此错误:

回溯(最近一次调用最后一次): 文件“[这是我的文件名]”,第 265 行,位于 aNavyOne = Button(V1a,文本 =“海军上将”,宽度 = 17,高度 = 2,command=aNavy).place(x=5,y=95) 名称错误:名称“V1a”未定义

我也找不到任何问题,在网上搜索,但所有消息来源都表明它需要以某种方式订购。但这似乎是正确的,并且不久前才起作用。

它应该显示主页和导航栏,可以点击“第一卷”,“角色”(打开新的顶层),“海军上将”(按钮)打开新的顶层。一切都有独特的名称,我确信这一点。程序中还有其他东西,但这就是引起我冲突的原因,一切都与程序中的顺序相同,但以问题本身为中心,并删除了一堆无用的注释(没有任何意义的标题)

对于上下文,这是所讨论的代码。尽管几小时前运行完全相同的代码,但现在它只是出现错误。这是为什么?

import tkinter as tk
from tkinter import ttk
from tkinter import *

#Windows
root = Tk()
root.title("AllofMurdle")

#Window Interface of Root (Base)
root.geometry("500x500")

def aNavy():
   ANAVY = Toplevel(root)
   ANAVY.geometry("400x500")
   ANAVY.title("AllofMurdle: Admiral Navy")
   navyTitle = Label(ANAVY, text = "Admiral Navy", font=("Arial Bold", 10),
                             width = 44, height = 3, borderwidth = 3, relief = "solid",
                             bg = "#000000", fg = "#FFFFFF").place(relx=0.5, y=40, anchor = CENTER)

def charactersv1():
   V1a = Toplevel(root)
   V1a.geometry("400x500")
   V1a.title("AllofMurdle: V1 Characters")
   
   v1CharactersTitle = Label(V1a, text = "Characters in Volume 1", font=("Arial Bold", 10),
                             width = 44, height = 3, borderwidth = 3, relief = "solid",
                             bg = "#000000", fg = "#FFFFFF").place(relx=0.5, y=40, anchor = CENTER)
   v1SuspectCharactersTitle = Label(V1a, text = "Suspects", font=("Arial Bold", 8),
                             width = 25, height = 1, borderwidth = 2, relief = "solid",
                             bg = "#000000", fg = "#FFFFFF").place(relx=0.5, y=80, anchor = CENTER)

aNavyOne = Button(V1a, text = "Admiral Navy", width = 17, height = 2, command=aNavy).place(x=5, y=95)

nav = Menu(root)

v1Menu = Menu(nav, tearoff=0)
v1Menu.add_command(label="Characters", command=charactersv1)
v1Menu.add_command(label="Weapons", command=weaponsv1)
v1Menu.add_command(label="Locations", command=locationsv1)
v1Menu.add_command(label="Motives", command=motivesv1)
v1Menu.add_command(label="Clues/Hints/Blurbs", command=clueshintsblurbsv1)
v1Menu.add_separator()
v1Menu.add_command(label="Answers", command=answersv1)
nav.add_cascade(label="Volume 1", menu=v1Menu)

root.config(menu=nav)
python tkinter undefined nameerror
1个回答
0
投票

V1a在函数charactersv1()中定义。所以它只在charactersv1()中可见。将 V1a 定义为全局,如下所示:

def 字符v1(): 全局V1a V1a = 顶层(根)

© www.soinside.com 2019 - 2024. All rights reserved.