为了账号安全,请及时绑定邮箱和手机立即绑定

尝试调用函数以提交给 MySQL 时如何修复“未定义变量”

尝试调用函数以提交给 MySQL 时如何修复“未定义变量”

料青山看我应如是 2022-01-05 12:09:46
我是 Tkinter 的新手,并试图创建一个函数,该函数将连接到我的 GUI 中的“提交”按钮,以便它将数据输入到我的 MySQL 数据库中。反馈告诉我,'itemCode_entry' is not defined在def inv_submit():函数中。我试图itemCode_entry从def inv_menu():函数中获取输入并将其输入到def inv_submit():MySQL 语句中。这是我得到的反馈。Exception in Tkinter callbackTraceback (most recent call last):  File "C:\Users\darre\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1702, in __call__    return self.func(*args)  File "Import_Test_Code2.py", line 103, in <lambda>    submit_btn = Button(btm_frame, text='Submit', bg=color1, command= lambda : inv_submit())  File "Import_Test_Code2.py", line 207, in inv_submit    item = itemCode_entry.get()NameError: name 'itemCode_entry' is not definedfrom tkinter import *import mysql.connector#  ======================MySQL Connection================================================================mydb = mysql.connector.connect(    host = "localhost",    user = "root",    passwd = "....",    database = "testdb",    )# Create Cursor Instancemy_cursor = mydb.cursor()# Create Database#my_cursor.execute("CREATE DATABASE trialProjectdb")root = Tk()root.geometry('500x500')root.title('Database Control')color1 = 'grey77'color2 = 'grey88'item = int()brandName = StringVar()#unitsPer = int()units = int()cost = float()#  ======================Frames================================================================top_frame = Frame(root, width=500, height=80, bg=color1)top_frame.pack(side=TOP)btm_frame = Frame(root, width=500, height=500, bg=color2)btm_frame.pack(side=TOP)#  ======================Inventory=============================================================inv_btn = Button(top_frame, text='Inventory', width=20,             command= lambda : inv_menu())inv_btn.place(x=0, y=0)submit_btn一旦我在“库存”表单中填写了信息,我希望“提交”按钮将数据提交给 MySQL 以更新数据库inv_menu()。
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

使其成为全局条目小部件:


global itemCode_entry

itemCode_entry = Entry(btm_frame, textvariable=item)

itemCode_entry.place(x=90, y=60)


查看完整回答
反对 回复 2022-01-05
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您遇到的问题是范围界定。例如,item = itemCode_entry.get()在您的 inv_submit() 函数中。这将导致一个问题,因为在“inv_submit()”函数的范围内以及程序的全局范围内都找不到“itemCode_entry.get()”。


一个可能的解决方案是这样的:



dev inv_menu():

...

return itemCode_entry, brand_entry, units_entry, unitCost_entry

在你的


dev inv_submit():

item, brandName, units, cost = inv_menu()


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信