我有一個問題,問題是我想創建一個post-it tkinter gui應用程式,我想存盤用戶創建的所有帖子,這樣他們就可以在重新運行應用程式時打開它,所以我使用sqlite 3模塊來實作這一點,但目前我卡住了,當用戶打開現有的post-its時,因為它打開的是for回圈的最后一個內容
如果你不明白,以下是代碼
如果你不明白,這里是代碼:
""""
from tkinter import *
import sqlite3
conn = sqlite3.connect("post-it.db")
row = 1
cursor = conn.cursor()
posts = cursor.execute("SELECT rowid, * FROM postits" )
postsFetch = posts.fetchall()
print(f"{postsFetch}"/span>)
def createPost()。
pass
def openPost(name)。
print(name)
post = Tk()
text = Label(post,text=name)
text.pack()
post.mainloop()
window = Tk()
window.geometry("400x400")
window.config(bg="blue")
createNew = Button(text="Create new Post-it", command=createPost)
createNew.grid( column=1,row=1)
createName = Entry()
createName.grid( column=1,row=2)
frame = Frame()
frame.grid( column=2)
#the problem is at this for loop it opens the last item text[/span].
forpostit in postsFetch:
postitBtn = Button(frame,text=postit[1],command=lambda: openPost(postit[2] )
postitBtn.grid(column=8, row=row)
row = 1 1
conn.commit()
window.mainloop()
conn.close()
""""
如果你知道答案,請幫助我們
。uj5u.com熱心網友回復:
首先,不要在一個程式中多次使用Tk - 它可能會導致以后的問題。對于所有其他視窗,使用Toplevel。將post = Tk()替換為post = Toplevel()。
你的回圈不作業的原因是這里解釋一下。要解決這個問題,把你的lambda函式改為lambda postit = postit: openPost(postit[2]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327113.html
標籤:
下一篇:對聯合表的代碼簡化的建議
