分段错误:11-tkinter python

分段错误:11-tkinter python,python,tkinter,segmentation-fault,Python,Tkinter,Segmentation Fault,分段错误:11-不确定这意味着什么,为什么会发生。我认为这是Python在我的机器上的一个问题,因为所有其他文件都运行良好。当然,我已经尝试重新启动和重新安装Python,但没有帮助 我只是想通过tkinter的菜单栏实现帧切换 非常感谢您的帮助 # import tkinter modules from tkinter import * from tkinter import ttk import tkinter.font as tkFont from PIL import ImageTk,

分段错误:11-不确定这意味着什么,为什么会发生。我认为这是Python在我的机器上的一个问题,因为所有其他文件都运行良好。当然,我已经尝试重新启动和重新安装Python,但没有帮助

我只是想通过tkinter的菜单栏实现帧切换

非常感谢您的帮助

# import tkinter modules
from tkinter import *
from tkinter import ttk
import tkinter.font as tkFont
from PIL import ImageTk, Image
from tkcalendar import *

# import modules for restart functionality
import os
import sys
import time


# define self
class tkinterApp(Tk):

    def __init__(self,*args, **kwargs):

        Tk.__init__(self, *args, **kwargs)

        # creating a container
        container = Frame(self)
        container.pack(side = "top", fill = "both", expand = True)

        container.grid_rowconfigure(0, weight = 1)
        container.grid_columnconfigure(0, weight = 1)

        # initialising frames to an empty array
        self.frames = {}

        menu_bar = Menu(container)

        menu_bar.add_cascade(label="Main Menu", menu=menu_bar)
        menu_bar.add_command(label="Welcome page", command=lambda: self.show_frame(welcome_frame))
        menu_bar.add_command(label="Book a vehicle", command=lambda: self.show_frame(booking_frame))
        menu_bar.add_command(label="Register as new user", command=lambda: self.show_frame(register_frame))

        Tk.config(self, menu=menu_bar)

        for F in (welcome_frame, register_frame, booking_frame):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row = 0, column = 0, sticky = "nsew")

        self.show_frame(welcome_frame)

        def show_frame(self, cont):
            frame = self.frames[cont]
            frame.tkraise()





class welcome_frame(Frame):
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        # welcome_frame = Frame(self, width=1000, height=800)
        # welcome_frame.grid()

        welcome = Label(welcome_frame, text="Hello, please use the menu above to navigate the interface")
        welcome.grid(row=0, column=4, padx=10, pady=10)

class register_frame(Frame):

    def __init__(self, parent, controller):

        Frame.__init__(self, parent)

        welcome = Label(self, text="New user - enter your details below to use the Collyer's car park.")
        welcome.grid(row=0, column=4, padx=10, pady=10)






class booking_frame(Frame):
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)


app = tkinterApp()
app.geometry("1000x800")
app.mainloop()

您正在尝试创建一个级联菜单,其中级联菜单是相同的菜单:

menu_bar.add_cascade(label="Main Menu", menu=menu_bar)
菜单
选项需要指向新的菜单

main_menu = Menu(menu_bar)
menu_bar.add_cascade(label="Main Menu", menu=main_menu)
我猜你也希望把菜单命令放在菜单上

main_menu.add_command(label="Book a vehicle", command=lambda: self.show_frame(booking_frame))
main_menu.add_command(label="Register as new user", command=lambda: self.show_frame(register_frame))

与问题无关,此代码也是错误的:

welcome = Label(welcome_frame, text="Hello, please use the menu above to navigate the interface")
您正试图使用类作为
标签
小部件的父级/主级。你不能那样做。第一个参数需要是一个小部件。在这种情况下,它应该是
self


您还需要确保
show\u frame
的缩进方式与tkinterApp类的
\uuu init\uuuuu
方法相同。

Legend-真是太感谢您了!!!如何将变量值从一个类传递到另一个类?我必须在每个类构造函数中声明它吗?