Python 分割错误?无错误I’;我看过…;

Python 分割错误?无错误I’;我看过…;,python,button,error-handling,tkinter,Python,Button,Error Handling,Tkinter,我有以下代码: 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).

我有以下代码:

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次;同时,做一些内存密集型的事情,比如加载大量图形化的网页,然后再次、反复地关闭它们。它每次都会崩溃吗?如果没有,运行并保持运行,直到它告诉您哪个柱塞杆坏了,然后更换它

现在,如果它每次都崩溃,那么您确实有软件问题。下一个最可能的场景是Tkinter插件与Python解释器、实际的Tk小部件库或两者都不兼容。从已知良好的源代码(例如,如果您运行的是发行版的包存储库Linux),卸载并重新安装Tk和Tkinter。这应该可以解决问题


Tkinter、Tk(一个较低级别的窗口库)或Python解释器中的完全错误的可能性要小得多,但仍然是可能的。只考虑这种可能性,如果重新安装已知的好包不会使问题消失。顺便问一下,我正在使用Python 2.7你使用的是哪一个库?我的意思是,Button类从何而来?我的第一行代码:
来自Tkinter import*
access
命令中是什么?我认为硬件故障不太可能发生。Tkinter是一个非常复杂的库,bug肯定会发生。我认为这应该作为一个bug报告给Python开发人员。@JamesElegan这是非常复杂的,是的,但是硬件问题和版本偏差都比实际bug更可能。@JamesElegan不,我只是假设(从痛苦的经验来看)版本倾斜和硬件故障更为常见。@CODER16以防不清楚:SEGFULT神奇地消失意味着你有坏RAM。找出哪个内存条坏了,在它对你造成更坏的影响之前将其更换。segfault神奇地消失的事实并不一定意味着坏内存出了问题。赛格故障经常发生在比赛条件下。