首页 > 解决方案 > AttributeError:“NoneType”对象在使用 StringVar() 时没有属性“_root”

问题描述

import mysql.connector
import time
from datetime import datetime
import tkinter
from tkinter import *

v1 = tkinter.StringVar()
v2 = tkinter.StringVar()
v3 = tkinter.StringVar()
v4 = tkinter.StringVar()


def add_buyer_btn():
    buyer_name = str(v1.get())
    buyer_add = str(v2.get())
    buyer_gst = str(v3.get())
    buyer_contact = str(v4.get())
    buyer_dues = 0.0
    buyer_credit = 0.0

    mycursor.execute("INSERT INTO buyers VALUES(%s, %s, %s, %s, %s, %s)", (buyer_name, buyer_add, buyer_gst, buyer_contact, buyer_dues, buyer_credit))

def add_buyer():
    gui1 = tkinter.Toplevel(width=400, height=500)
    gui1.title("Add new buyer")
    tkinter.Label(gui1, text="Enter buyer's name : ").place(x=50, y=50)
    tkinter.Label(gui1, text="Enter buyer's address : ").place(x=50, y=100)
    tkinter.Label(gui1, text="Enter GSTIN : ").place(x=50, y=150)
    tkinter.Label(gui1, text="Enter contact : ").place(x=50, y=200)
    entry1 = tkinter.Entry(gui1, textvariable=v1).place(x=200, y=50)
    entry2 = tkinter.Entry(gui1, textvariable=v2).place(x=200, y=100)
    entry3 = tkinter.Entry(gui1, textvariable=v3).place(x=200, y=150)
    entry4 = tkinter.Entry(gui1, textvariable=v4).place(x=200, y=200)
    b5 = tkinter.Button(gui1, text="Submit", command=add_buyer_btn)

执行后,弹出如下错误。请帮助我消除此错误。当用户单击“提交”按钮时,我只想从条目字段中获取输入。我尝试将 StringVar() 变量 v1、v2、v3 和 v4 作为方法参数传递,但这也给了我错误。所以我被困在这一点上。任何帮助将不胜感激。

Traceback (most recent call last):
  File "C:/Users/Jayant Jeet Tomar/PycharmProjects/business/business.py", line 9, in <module>
    v1 = tkinter.StringVar()
  File "C:\Users\Jayant Jeet Tomar\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 480, in __init__
    Variable.__init__(self, master, value, name)
  File "C:\Users\Jayant Jeet Tomar\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 317, in __init__
    self._root = master._root()
AttributeError: 'NoneType' object has no attribute '_root'

PS我不知道为什么这被报告为重复。提到的问题的答案不适用于我的问题。我无法访问 Entry 小部件来输入用户数据。

标签: pythonmysqluser-interfacetkinterdatabase-connection

解决方案


推荐阅读