【问题标题】:Data Types Of Python Entry WidgetPython Entry 小部件的数据类型
【发布时间】:2020-10-01 08:06:19
【问题描述】:

我正在制作图书馆管理软件。记录没有被插入。我似乎找不到错误 这是编码

from tkinter import *
from tkinter import messagebox 
from tkinter import Entry

import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",passwd="0000",database="test")
libcur=mydb.cursor()




from PIL import ImageTk,Image
lib=Tk()





var=StringVar()
fn=StringVar()
yn=StringVar()
ln=IntVar()
dn=StringVar()
an=StringVar()
kn=StringVar()
gn=StringVar()
mn=StringVar()
pn=StringVar()



def insert():
    top=Toplevel()
    top.geometry("500x500")
    top.title("INSERT RECORDS")
    global bname
    global bid
    global author
    global DOI
    global DOR
    global RES
    global RNM
    global AD
    label4=Label(top,text="Book Name:",fg="orange",font=("arial",15,"bold"))
    label4.place(x=65,y=70)
    bname=Entry(top,textvariable=fn)
    bname.place(x=270,y=75)
    label5=Label(top,text="Book Id:",fg="seagreen",font=("arial",15,"bold"))
    label5.place(x=65,y=30)
    bid=Entry(top,textvariable=ln)
    bid.place(x=270,y=35)
    label6=Label(top,text="Author:",fg="grey",font=("arial",15,"bold"))
    label6.place(x=65,y=100)
    author=Entry(top,textvariable=dn)
    author.place(x=270,y=105)
    label7=Label(top,text="Date of issuing:",fg="deepskyblue",font=("arial",15,"bold"))
    label7.place(x=65,y=130)
    DOI=Entry(top,textvariable=an)
    DOI.place(x=270,y=135)
    label8=Label(top,text="Date of return:",fg="gold",font=("arial",15,"bold"))
    label8.place(x=65,y=170)
    DOR=Entry(top,textvariable=gn)
    DOR.place(x=270,y=175)
    label9=Label(top,text="Re-issues(Yes/No):",fg="navy",font=("arial",15,"bold"))
    label9.place(x=65,y=200)
    RES=Entry(top,textvariable=mn)
    RES.place(x=270,y=205)
    list1= {"Adventure","Art","Children","Contemporary","Mystery","Cooking","Dystopian","Development","AutoBiography","Families","Fantasy","Fiction","Guide","Humor","History","Health","Motivational","Memoir","Novel","Paranormal","Personal","Romance","Travel"}









def dynamic_data_entry():
    bname.delete(0,END)
    bid.delete(0,END)
    author.delete(0,END)
    DOI.delete(0,END)
    DOR.delete(0,END)
    RES.delete(0,END)
    RNM.delete(0,END)
    AD.delete(0,END)
    id1=ln.get()
    name1=fn.get()
    auth1=dn.get()
    doi1=an.get()
    dor1=gn.get()
    rname=kn.get()
    Address=pn.get
    reiss=mn.get()
    gen1=var.get()
    libcur.execute("INSERT INTO 
 tcl(Book_id,Book_name,Author,DOI,DOR,Reissues,Recipients_Name,Address,Genre) 
VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)",(id1,name1,auth1,doi1,dor1,reiss,rname,Address,gen1))
    mydb.commit()
    messagebox.showinfo("INSERT STATUS","RECORD HAS BEEN ADDED SUCCESSFULLY")
    libcur.close()








lib.mainloop()`

当我点击顶部窗口中的插入记录按钮时,它显示以下错误-

  Traceback (most recent call last):
  File "C:\Users\sapna\anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
  return self.func(*args)
  File "C:\Users\sapna\Desktop\SAMARTH.py", line 136, in dynamic_data_entry
  id1=ln.get()
  File "C:\Users\sapna\anaconda3\lib\tkinter\__init__.py", line 510, in get
  return int(self._tk.getdouble(value))
  tkinter.TclError: expected floating-point number but got ""

如果你能帮助我,那将非常有帮助。我会很感激付出的努力。 非常感谢。

@布莱恩·奥克利 我已经试过了。但是在这样做之后它会显示以下错误

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in 
your SQL syntax; check the manual that corresponds to your MySQL server 
version for the right syntax to use near ',,,,,,,<bound method StringVar.get 
of <tkinter.StringVar object at 0x000002856EC' at line 1

我该如何解决这个问题。

【问题讨论】:

标签: python mysql tkinter


【解决方案1】:

在获取当前值之前,您正在删除与IntVar 关联的条目小部件中的数据。因为该值现在是一个空字符串,所以 tkinter 尝试将空字符串转换为一个数字并抛出你得到的错误。

在尝试获取值之前,您不应删除条目小部件的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多