我是软件开发的学生,并且正在出于学习目的使用Python开发一个应用程序(我的第一个应用程序!)。
它运行得很好,并且我几乎可以使用所有想要使用的功能。
该程序的简要说明:这是一个管理运动俱乐部会员的管理程序。因此它具有基本功能,例如添加成员,列出成员等。
为了使其完整,还需要删除成员的功能。这一直很好,但是我很少使用该功能。
现在,在修改ttk.Treeview()
对象以使其按姓氏排序之后,我添加了一个新成员,以查看其是否应按其应有的排序。它做了!
现在我想删除该成员,但是由于某种原因,它不再起作用。
它使Python崩溃。它不仅崩溃了应用程序,没有错误,只是简单的“ Pythonw.exe已停止工作”。
这是该函数的所有代码:
def dellid(zeid, addwindow):
winsound.PlaySound("SystemHand", winsound.SND_ASYNC)
usure = tkinter.Tk()
print('usure window created')
usure.title('Lid verwijderen')
usure.geometry('{}x{}'.format('300', '150'))
usure.iconbitmap(default='programdata\\icon.ico')
usure.attributes("-topmost", True)
addwindow.grab_set()
#logo2 = PhotoImage(file="warning.png")
#logolabel = tkinter.Label(usure, image = logo2)
#logolabel.grid(row01, columnspan = 2)
usure.columnconfigure(0, weight = 1)
usure.columnconfigure(1, weight = 2)
label01 = tkinter.Label(usure, text = '''
Weet U zeker dat U dit lid wilt verwijderen?
Deze actie kan niet ongedaan worden gemaakt!''').grid(row = 1, columnspan = 2)
emptyrow = tkinter.Label(usure, text = ' ').grid(row = 2, columnspan = 2)
jaknop = ttk.Button(usure, text = 'Ja', command = lambda: delforsure(zeid, usure, addwindow)).grid(row = 3, column = 0, sticky = 'E')
neeknop = ttk.Button(usure, text = 'Nee', command = lambda: nodell(addwindow, usure)).grid(row = 3, column = 1, sticky = 'S')
def nodell(addwindow, usure):
addwindow.grab_release()
usure.destroy()
def delforsure(zeid, usure, addwindow):
#addwindow.grab_release()
addwindow.destroy()
print('addwindow destroyed')
usure.destroy()
print('usure destroyed')
conn = sqlite3.connect('test.db')
c = conn.cursor()
opendb = []
opendb.append(zeid)
print(zeid)
print(opendb)
c.execute("DELETE FROM leden WHERE ids = ?",opendb)
print('c.execute')
conn.commit()
print('c.commit')
#usure.destroy()
done = tkinter.Tk()
done.title('Lid verwijdert')
done.geometry('{}x{}'.format('300', '150'))
done.iconbitmap(default='programdata\\icon.ico')
label01 = tkinter.Label(done, text = '''
Lid verwijdert
''')
label01.pack()
done.update()
time.sleep(2)
on_return(done)
on_return
功能关闭所述窗口并重新打开主菜单。
现在在delforsure(zeid, usure, addwindow)
中,它锁定在usure.destroy()
行上
它不再打印“可用销毁”行,而是放在那里查看其锁定位置。
它没有给出任何错误,Python本身只是崩溃了。
如果我移动
usure.destroy()
print('usure destroyed')
在on_return(done)
下,一直到底部,它确实关闭了窗口并返回到主菜单,但是将以图形失真绘制主菜单,此后不久仍然崩溃。
我真的不明白发生了什么。
有人可以帮我追踪这个问题吗?
参考方案
看来您正在制作是/否模态窗口。您是否有不想使用tkinter内置版本的原因?
from tkinter import messagebox
def dellid(zeid, addwindow):
answer = messagebox.askyesno(
'Lid verwijderen',
'Weet U zeker dat U dit lid wilt verwijderen?\n'
'Deze actie kan niet ongedaan worden gemaakt!')
if answer:
addwindow.destroy()
print('addwindow destroyed')
在返回'Response'(Python)中传递多个参数 - python我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…
Python exchangelib在子文件夹中读取邮件 - python我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…
python JSON对象必须是str,bytes或bytearray,而不是'dict - python在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…
R'relaimpo'软件包的Python端口 - python我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。
Python ThreadPoolExecutor抑制异常 - pythonfrom concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…