全局名称'root not defined',tkinter,python [英] Global name 'root not defined', tkinter, python

查看:148
本文介绍了全局名称'root not defined',tkinter,python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

python非常新,并且希望创建一个GUI窗口,我打算稍后将其用于查询工具。我不断收到全局名称root未定义的错误。我正在尝试创建一个具有窗口的用户界面。我可能缺少对象概念。需要一些帮助。谢谢。这里是我的代码:

Very new to python and wanted to create a GUI window that i plan to use for a Query tool later. I keep getting global name root not defined error. I am trying to create a user interface that has a window. I probably am missing Object concepts. Need some help. Thanks. Here is my code:

from Tkinter import *


class GUI(Frame):
"""A Graphical User Interface Class for building a GUI Frame.

Attributes:
    master : 
"""

    def __init__(self,master):
        Frame.__init__(self,master)
        self.grid()
        self.menubar()
        self.label()
        self.onExit()


    def menubar(self):
        self.menubar = Menu(root)
        self.menubar.add_command(label="File")
        self.menubar.add_command(label="Exit", command=self.onExit)
        root.config(menu=self.menubar)


    def label(self):
        L0 = Label(text="Use this tool to find the lake location.").grid(row = 0, column = 0)
        L1 = Label(text="Lake name :").grid(row = 2)
        L2 = Label(text="County name :").grid(row = 3)

        E0 = Entry().grid(row = 2, column = 2)
        E1 = Entry().grid(row = 3, column = 2)

        B0 = Button(text="Search").grid(row = 6, column = 2)

        if self.E0 and self.E1==null:
            raise RuntimeError('Entry cannot be blank.')


    def onExit(self):
        self.quit()

def main():
    root = Tk()
    root.geometry("400x200")
    root.title(" Locator (L^3)")
    app = GUI(root)
    root.mainloop()

if __name__ == '__main__':
    main()


推荐答案

def menubar(self):
    self.menubar = Menu(root)
    self.menubar.add_command(label="File")
    self.menubar.add_command(label="Exit", command=self.onExit)
    root.config(menu=self.menubar)

root 在这里不存在。你或者需要让 root 一个全局变量(坏主意)或者将根传递给 GUI 类并保存一个引用到它。

root doesn't exist here. You either need to make root a global variable (bad idea) or pass root to the GUI class and save a reference to it.



Something like

def __init__(self, master):
    Frame.__init__(self, master)
    self.master = master
    self.grid()
    self.menubar()
    self.label()
    self.onExit()

def menubar(self):
    self.menubar = Menu(self.master)
    self.menubar.add_command(label="File")
    self.menubar.add_command(label="Exit", command=self.onExit)
    self.master.config(menu=self.menubar)

这篇关于全局名称'root not defined',tkinter,python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆