我有这个代码:
from Tkinter import *
def get_info(key):
pass#do more later
def create_new():
create = Toplevel(root)
create.title('Create A New Contact')
Label(create, text='Name: ').grid(row=0, sticky=W+E)
name = Entry(create, width=8).grid(row=1, sticky=W+E)
Label(create, text='Address(ex. 1111 Main St, MyCity, Anystate 12345): ', wraplength=1).grid(row=2, sticky=W+E)
address = Entry(create, width=8).grid(row=3, sticky=W+E)
def access():
access_window = Toplevel(root)
access_window.title("Access a Contact")
Label(access_window, text="Enter a first name: ").grid(row=0, sticky=W+E)
access_key = Entry(access_window, width=8).grid(row=1, sticky=W+E)
Button(access_window, text="Submit", command=lambda: get_info(access_key.get('0.0', 'end-1c'))).grid(row=2, sticky=W+E)
root = Tk()
root.title('Address Book')
button1 = Button(root, text="Create New", command=create_new)
button1.grid(row=0, column=0)
button2 = Button(root, text="Access Person", command=access)
button2.grid(row=0, column=1)
此行有错误:
button2.grid(row=0, column=1)
它给了我这个错误:
Segmentation fault: 11
为什么会出现这个?什么是段错误?
最佳答案
“段错误”是一个非常低级的错误:它意味着操作系统捕获您的程序访问未分配给任何实际内存的内存地址范围。
如果您使用 C 进行编程,这将表明您的代码中存在错误。但你正在用 Python 编程。在 Python 中执行的任何操作都应该不可能触发段错误。该错误实际上并不在您的代码中!无论您相信与否,此问题最可能的原因是硬件故障:具体而言,RAM 损坏。反复运行该程序至少100次;同时,执行一些内存密集型操作,例如加载大量图形密集型网页,然后再次关闭它们,如此反复。它每次都会崩溃吗?如果没有,请运行 memtest86+
并让它继续运行直到它告诉您哪个内存条坏了,然后更换它。
现在,如果每次都崩溃,则确实存在软件问题。下一个最可能的情况是 Tkinter 附加组件与 Python 解释器、实际的 Tk 小部件库或两者都不兼容。从已知良好的源卸载并重新安装 Tk 和 Tkinter(例如,如果您运行的是 Linux,则为您的发行版的软件包存储库)。这应该可以解决问题。
Tkinter、Tk、较低级别的窗口库之一或 Python 解释器中的彻底错误的可能性要小得多,但仍然有可能。仅当重新安装已知良好的软件包不能解决问题时才考虑这种可能性。
关于python - 分段故障?我没有看到任何错误...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22901467/