我用python编写了一些代码,使用tkinter
检索房间的名称,并使用该名称将房间名称及其所属站点插入SQL数据库。但是,当我运行代码时,它不会从输入框中检索房间名称
有人能帮忙吗
def addroom():
global screen14
global roomsinsite
roomsinsite = StringVar()
screen14 = Tk()
screen14.geometry("300x250")
screen14.title("Insert rooms")
Label(screen14, text = "Insert room name:", bg = "LightSkyBlue1", width = "300", height = "2").pack()
Label(screen14, text = "").pack()
roomsinsite_entry = Entry(screen14, textvariable = roomsinsite)
roomsinsite_entry.pack()
Button(screen14, text = "Register room", width = "12", height = "1", command = insertroom).pack()
def insertroom():
sitename4_info = sitename2.get()
print(sitename4_info)
roomname1_info = roomsinsite.get()
print(roomname1_info)
cursor = cnn.cursor()
# SQL to select the siteID and insert rooms for that paticular site.
siteID_fetch3 = "SELECT siteID FROM Sites WHERE siteName = %s"
cursor.execute(siteID_fetch3, [sitename4_info])
siteID_fetch3 = cursor.fetchall()
# print out the values retrieved
print(siteID_fetch3[0][0])
insertRooms = "INSERT INTO `rooms`(`siteID_fk2`, `roomname`) VALUES (%s,%s)"
insertRooms_val = (siteID_fetch3[0][0], roomname1_info)
cursor.execute(insertRooms, insertRooms_val)
# print out the rows inserted.
print(cursor.rowcount)
cnn.commit()
您的代码中可能有多个
Tk
,这意味着您的StringVar
不知道属于哪个Tk
。因此,这里有三种可能的解决方案:Tk
并将所有子窗口替换为Toplevel
,因此:Tk
实例,则可以为每个StringVar
指定master
,如:StringVar
,除非我想使用trace
,这里如果使用StringVar
的唯一目的是获取条目小部件的值,那么将其删除并使用条目小部件的get()
方法,如:如果你问我,第一种和第三种方法的结合似乎是最佳实践。同样在这里,即使您没有使用多个
Tk
,上述方法之一肯定会解决问题(只要在条目中输入了某些内容,然后调用insertroom()
)相关问题 更多 >
编程相关推荐