我最近开始学习python,最近开始学习Tkinter模块。为了练习,我决定创建一个工作方式有点像mySQL workbench的窗口环境。一切都很好,直到我发现提交第二个查询实际上并没有删除前一个查询。 我的按钮回调代码如下:
def queryBtnCallBack():
global query
global queryEntry
global resList
global resFrame
j=1
#Delete frame before showing next data
for widget in resFrame.winfo_children():
widget.destroy()
#For this one I also tried
#if resFrame != None:
# resFrame.destroy()
cursor = db.cursor()
resFrame = Tkinter.Frame()
#Check if user has given a correct input
try:
query = queryEntry.get()
cursor.execute(query)
data = cursor.fetchall()
#Let user know if something is wrong
except:
errorQLabel = Tkinter.Label(resFrame, text='Error. Please make sure your query is correct', bg='#99b3e6')
errorQLabel.grid(row=j+1, column=2)
resFrame.configure(background='#99b3e6')
resFrame.pack()
return
for i in data:
resList.append(i)
#Query Results window part
for i in range(len(resList)):
j += 1
resultLabel = Tkinter.Label(resFrame, text=resList[i], bg='#99b3e6')
resultLabel.grid(row=j, column=2)
resFrame.configure(background='#99b3e6')
#Pack the results frame
resFrame.pack()
我现在这样做的方式是,删除帧,然后将下一帧放在现在删除的帧下面。 任何形式的帮助都将不胜感激。 提前谢谢你
也许你想让这件事变得更复杂。我建议只保留一个大标签,用新的文本重新配置它以显示新的数据,或者在数据中插入新行来保持部分的分离。要从entry小部件中删除前一个查询,只需执行
queryEntry.delete('0', 'end')
。在相关问题 更多 >
编程相关推荐