我希望有一个tkinter gui,它有一个条目小部件和一个按钮,用户可以在输入字段中输入一个数字,然后单击“提交”按钮。按下按钮时,我希望他的条目存储到我设置的数据库中。
到目前为止,我的代码如下:
db = Mysqldb.connect('localhost', 'root', '----', '----', 'design')
cursor = db.cursor()
def submit_it():
cursor.execute('INSERT INTO time VALUES (data.get())')
data = Entry(gui2, text = 'food name')
data.place(x=100,y=100)
submit = Button(gui2, text = 'submit', command = submit_it())
submit.place(x=200,y=200)
我将非常感谢任何有关如何使其工作的想法...再次,我想要做的就是让用户在输入字段中输入内容并单击提交按钮。完成后,他的输入将保存到我的数据库中:)
答案 0 :(得分:1)
您需要更改两件事,将data.get()作为参数放置,而不是直接放在操作中。并且在将其作为按钮的命令传递时不要调用submit_it。
db = Mysqldb.connect('localhost', 'root', '----', '----', 'design')
cursor = db.cursor()
def submit_it():
cursor.execute('INSERT INTO time VALUES (%s)', (data.get(),)) # place data.get() as a parameter as a type or list
data = Entry(gui2, text = 'food name')
data.place(x=100,y=100)
submit = Button(gui2, text = 'submit', command = submit_it) # don't call submit_it, get rid of the ()
submit.place(x=200,y=200)
您可能还希望稍后使用db.commit()
和db.close()
提交并关闭数据库以保存更改。
答案 1 :(得分:0)
对于python 3.7,您不应调用submit_it()
函数,而应将其保留为submit_it
。
为了传递用户输入,请使用%s而不是直接使用data.get()。
db = Mysqldb.connect('localhost', 'root', '----', '----', 'design')
cursor = db.cursor()
user_input = data.get()
def submit_it():
cursor.execute('INSERT INTO time VALUES (%s)', user_input)
data = Entry(gui2, text = 'food name')
data.place(x=100,y=100)
submit = Button(gui2, text = 'submit', command = submit_it)
submit.place(x=200,y=200)
要一次插入多个值,请传递具有用户输入值的变量列表或元组。
多值插入示例:
# suppose you have 3 inputs as name, quantity, color
# then use...
Name = name.get()
Quantity = quantity.get()
Color = color.get()
def submit_it():
cursor.execute('INSERT INTO time(name, quantity, color)VALUES (%s, %s, %s)', (Name, Quantity, Color))
另外,要成功将值添加到数据库中,u应该db.commit()
和db.close()