Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter窗口在我运行程序时崩溃 我的程序在运行时崩溃了。_Python_User Interface_Tkinter_Interface_Crash - Fatal编程技术网

Python Tkinter窗口在我运行程序时崩溃 我的程序在运行时崩溃了。

Python Tkinter窗口在我运行程序时崩溃 我的程序在运行时崩溃了。,python,user-interface,tkinter,interface,crash,Python,User Interface,Tkinter,Interface,Crash,他们的密码是我的--- 从tkinter导入* 从tkinter.font导入字体 从tkinter导入ttk 班级申请: 定义初始化(自,根): self.root=根 self.root.title(“自动车库管理应用程序”) self.screen\u width=self.root.winfo\u screenwidth() self.screen\u height=self.root.winfo\u screen height() self.root.geometry(“%dx%d+-

他们的密码是我的---

从tkinter导入*
从tkinter.font导入字体
从tkinter导入ttk
班级申请:
定义初始化(自,根):
self.root=根
self.root.title(“自动车库管理应用程序”)
self.screen\u width=self.root.winfo\u screenwidth()
self.screen\u height=self.root.winfo\u screen height()
self.root.geometry(“%dx%d+-10+0”%(self.screen\u宽度,self.screen\u高度))
bg_color1=“#ff704d”
bg_color2=“粉末蓝”
#===================字体
self.frame\u label\u font=font(family=“Poppins”,size=18,weight=“bold”)
self.entry_label_font1=Font(family=“Roboto”,size=17,weight=“bold”)
self.entry_label_font2=Font(family=“Roboto”,size=16,weight=“bold”)
self.entry\u font=font(family=“Noto Sans”,size=14,weight=“bold”)
self.btn_font=font(family=“Noto Sans”,size=15,weight=“bold”)
底部框架=框架(self.root)
底部框架包装(fill=“both”,side=“bottom”)
#============短期账单明细
账单详情=框架(底部框架,背景=背景颜色1,bd=6,浮雕=凹槽)
账单详情。包装(fill=“both”,side=“left”)
#劳动
总人工=标签(账单详细信息,text=“总人工”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
总人工网格(行=0,列=0,padx=20,pady=25,sticky=“w”)
总计\零件\人工\文本=条目(账单\明细,宽度=10,字体=self.Entry\字体,bd=8,浮雕=凹陷)
总计零件人工网格(行=0,列=1,padx=5,sticky=“w”)
#折扣
折扣=标签(票据详细信息,text=“折扣”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
贴现网格(行=1,列=0,padx=20,sticky=“w”)
贴现\u txt=分录(票据\u明细,宽度=10,字体=self.Entry\u字体,bd=8,浮雕=SUNKEN)
折扣网格(行=1,列=1,padx=5,sticky=“w”)
#小计
小计=标签(账单明细,text=“小计”,bg=bg\u color1,fg=“黄色”,font=self.entry\u Label\u font1)
网格小计(行=0,列=2,padx=10,pady=5,sticky=“w”)
小计\u txt=分录(账单\u明细,宽度=10,字体=self.Entry\u字体,bd=8,浮雕=SUNKEN)
小计网格(行=0,列=3,padx=20,sticky=“w”)
#发票总额
发票总额=标签(账单详情,text=“发票总额”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签)
发票总额网格(行=1,列=2,padx=10,sticky=“w”)
发票\u总计\u txt=分录(账单\u明细,宽度=10,字体=self.Entry\u字体,bd=8,浮雕=SUNKEN)
发票总额txt.grid(行=1,列=3,padx=20,sticky=“w”
#==========客户详细信息
customer\u details\u frame=LabelFrame(self.root,text=“customer details”,bg=bg\u color1,fg=“white”,
font=self.frame\u label\u font,bd=6,浮雕=GROOVE)
客户详细信息框架包装(填充=两者)
#客户名称
客户名称=标签(客户详细信息\u框架,text=“客户名称”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
客户名称.grid(行=0,列=0,padx=20,pady=5,sticky=“w”)
customer\u name\u txt=Entry(customer\u details\u frame,width=22,font=self.Entry\u font,bd=5,relieve=SUNKEN)
customer_name_txt.grid(行=0,列=1,padx=10,sticky=“w”)
#客户电话号码
客户电话=标签(客户详细信息\u框架,text=“客户电话”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
客户电话网格(行=0,列=2,padx=20,pady=5,sticky=“w”)
customer\u phone\u txt=Entry(customer\u details\u frame,width=22,font=self.Entry\u font,bd=5,relieve=SUNKEN)
customer\u phone\u txt.grid(行=0,列=3,padx=10,sticky=“w”)
客户电话2=标签(客户详细信息框架,text=“客户电话号码”,bg=bg\u color1,fg=“黄色”,font=self.entry\u标签1)
customer_phone2.grid(行=1,列=2,padx=10,sticky=“w”)
customer\u phone2\u txt=Entry(customer\u details\u frame,width=22,font=self.Entry\u font,bd=5,relieve=SUNKEN)
customer_phone2_txt.grid(行=1,列=3,padx=10,sticky=“w”)
#客户地址
客户地址=标签(客户详细信息\u框架,text=“客户地址”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
客户地址网格(行=0,列=4,padx=20,pady=5,sticky=“w”)
客户地址网格(行=0,列=4,padx=20,pady=5)
customer\u address\u txt1=条目(customer\u details\u frame,width=22,font=self.Entry\u font,bd=5,relieve=SUNKEN)
客户地址网格(行=0,列=5,padx=10,sticky=“w”)
customer\u address\u txt2=条目(customer\u details\u frame,width=22,font=self.Entry\u font,bd=5,relieve=SUNKEN)
客户地址网格(行=1,列=5,padx=10,sticky=“w”)
customer\u address\u txt3=条目(customer\u details\u frame,width=22,font=self.Entry\u font,bd=5,relieve=SUNKEN)
客户地址网格(行=2,列=5,padx=10,pady=5,sticky=“w”)
#==========车辆详细信息
vehicle\u details\u frame=LabelFrame(self.root,text=“vehicle details”,bg=bg\u color1,fg=“white”,
font=self.frame\u label\u font,bd=6,浮雕=GROOVE)
车辆详细信息框架包装(填充=两个)
#车辆名称
车辆名称=标签(车辆详细信息\u框架,text=“车辆名称”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
车辆名称网格(行=0,列=0,padx=20,pady=15,sticky=“w”)
vehicle\u name\u txt=条目(vehicle\u details\u frame,width=18,font=self.Entry\u font,bd=5,relieve=SUNKEN)
车辆名称网格(行=0,列=1,padx=5,sticky=“w”)
#车辆登记号码
车辆注册=标签(车辆详细信息\u框架,text=“车辆注册号”,bg=bg\u颜色1,fg=“黄色”,font=self.entry\u标签\u font1)
from tkinter import *
from tkinter.font import Font
from tkinter import ttk

class Application:
    def __init__(self, root):
        self.root = root
        self.root.title("Auto-Garage Management Application")
        self.screen_width = self.root.winfo_screenwidth()
        self.screen_height = self.root.winfo_screenheight()
        self.root.geometry("%dx%d+-10+0" % (self.screen_width, self.screen_height))

        bg_color1 = "#ff704d"
        bg_color2 = "powder blue"

        # =============== Fonts
        self.frame_label_font = Font(family="Poppins", size=18, weight="bold")
        self.entry_label_font1 = Font(family="Roboto", size=17, weight="bold")
        self.entry_label_font2 = Font(family="Roboto", size=16, weight="bold")
        self.entry_font = Font(family="Noto Sans", size=14, weight="bold")
        self.btn_font = Font(family="Noto Sans", size=15, weight="bold")


        bottom_frame = Frame(self.root)
        bottom_frame.pack(fill="both", side="bottom")

        # ========== Bill Details InShort
        bill_details = Frame(bottom_frame, bg=bg_color1, bd=6, relief=GROOVE)
        bill_details.pack(fill="both", side="left")

        # Labour
        total_labour = Label(bill_details, text="Total Labour", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        total_labour.grid(row=0, column=0, padx=20, pady=25, sticky="w")

        total_parts_labour_txt = Entry(bill_details,  width=10, font=self.entry_font, bd=8, relief=SUNKEN)
        total_parts_labour_txt.grid(row=0, column=1, padx=5, sticky="w")

        # Discount
        discount = Label(bill_details, text="Discount", bg=bg_color1, fg="yellow",font=self.entry_label_font1)
        discount.grid(row=1, column=0, padx=20, sticky="w")

        discount_txt = Entry(bill_details,  width=10, font=self.entry_font, bd=8, relief=SUNKEN)
        discount_txt.grid(row=1, column=1, padx=5, sticky="w")

        # Subtotal
        subtotal = Label(bill_details, text="Sub Total", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        subtotal.grid(row=0, column=2, padx=10, pady=5, sticky="w")

        subtotal_txt = Entry(bill_details, width=10, font=self.entry_font, bd=8, relief=SUNKEN)
        subtotal_txt.grid(row=0, column=3, padx=20, sticky="w")

        # Invoice Total
        invoice_total = Label(bill_details, text="Invoice Total", bg=bg_color1, fg="yellow",font=self.entry_label_font1)
        invoice_total.grid(row=1, column=2, padx=10, sticky="w")

        invoice_total_txt = Entry(bill_details, width=10, font=self.entry_font, bd=8, relief=SUNKEN)
        invoice_total_txt.grid(row=1, column=3, padx=20, sticky="w"

        # ========== Customer Details
        customer_details_frame = LabelFrame(self.root, text="Customer Details", bg=bg_color1, fg="white",
                                            font=self.frame_label_font, bd=6, relief=GROOVE)
        customer_details_frame.pack(fill=BOTH)

        # Customer Name
        customer_name = Label(customer_details_frame, text="Customer Name", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        customer_name.grid(row=0, column=0, padx=20, pady=5, sticky="w")

        customer_name_txt = Entry(customer_details_frame,  width=22, font=self.entry_font, bd=5, relief=SUNKEN)
        customer_name_txt.grid(row=0, column=1, padx=10, sticky="w")

        # Customer Phone Number
        customer_phone = Label(customer_details_frame, text="Customer Phone", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        customer_phone.grid(row=0, column=2, padx=20, pady=5, sticky="w")

        customer_phone_txt = Entry(customer_details_frame,  width=22, font=self.entry_font, bd=5, relief=SUNKEN)
        customer_phone_txt.grid(row=0, column=3, padx=10, sticky="w")

        customer_phone2 = Label(customer_details_frame, text="Customer Tel No", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        customer_phone2.grid(row=1, column=2, padx=10, sticky="w")

        customer_phone2_txt = Entry(customer_details_frame,  width=22, font=self.entry_font, bd=5, relief=SUNKEN)
        customer_phone2_txt.grid(row=1, column=3, padx=10, sticky="w")

        # Customer Address
        customer_address = Label(customer_details_frame, text="Customer Address", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        customer_address.grid(row=0, column=4, padx=20, pady=5, sticky="w")
        customer_address.grid(row=0, column=4, padx=20, pady=5)

        customer_address_txt1 = Entry(customer_details_frame, width=22, font=self.entry_font, bd=5, relief=SUNKEN)
        customer_address_txt1.grid(row=0, column=5, padx=10, sticky="w")

        customer_address_txt2 = Entry(customer_details_frame, width=22, font=self.entry_font, bd=5, relief=SUNKEN)
        customer_address_txt2.grid(row=1, column=5, padx=10, sticky="w")

        customer_address_txt3 = Entry(customer_details_frame, width=22, font=self.entry_font, bd=5, relief=SUNKEN)
        customer_address_txt3.grid(row=2, column=5, padx=10, pady=5, sticky="w")

        # ========== Vehicle Details
        vehicle_details_frame = LabelFrame(self.root, text="Vehicle Details", bg=bg_color1, fg="white",
                                            font=self.frame_label_font, bd=6, relief=GROOVE)
        vehicle_details_frame.pack(fill=BOTH)

        # Vehicle Name
        vehicle_name = Label(vehicle_details_frame, text="Vehicle Name", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        vehicle_name.grid(row=0, column=0, padx=20, pady=15, sticky="w")

        vehicle_name_txt = Entry(vehicle_details_frame,  width=18, font=self.entry_font, bd=5, relief=SUNKEN)
        vehicle_name_txt.grid(row=0, column=1, padx=5, sticky="w")

        # Vehicle Registration Number
        vehicle_registration = Label(vehicle_details_frame, text="Vehicle Registration No", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        vehicle_registration.grid(row=1, column=0, padx=20, pady=8, sticky="w")

        vehicle_registration_txt = Entry(vehicle_details_frame,  width=18, font=self.entry_font, bd=5, relief=SUNKEN)
        vehicle_registration_txt.grid(row=1, column=1, padx=5, sticky="w")

        # Vehicle Service Type
        vehicle_service = Label(vehicle_details_frame, text="Vehicle Service Type", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        vehicle_service.grid(row=1, column=3, padx=5, pady=8, sticky="w")

        vehicle_service_txt = Entry(vehicle_details_frame, width=18, font=self.entry_font, bd=5, relief=SUNKEN)
        vehicle_service_txt.grid(row=1, column=4, padx=5, sticky="w")

        # Vehicle Modal
        vehicle_modal = Label(vehicle_details_frame, text="Vehicle Modal", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        vehicle_modal.grid(row=0, column=3, padx=5, sticky="w")

        vehicle_modal_txt = Entry(vehicle_details_frame, width=18, font=self.entry_font, bd=5, relief=SUNKEN)
        vehicle_modal_txt.grid(row=0, column=4, padx=5, sticky="w")

        # Vehicle SpeedDoMeter Reading
        vehicle_speedDo = Label(vehicle_details_frame, text="SpeedDoMeter Reading", bg=bg_color1, fg="yellow", font=self.entry_label_font1)
        vehicle_speedDo.grid(row=0, column=5, padx=5, sticky="w")

        vehicle_speedDo_txt = Entry(vehicle_details_frame, width=18, font=self.entry_font, bd=5, relief=SUNKEN)
        vehicle_speedDo_txt.grid(row=0, column=6, padx=5, sticky="w") 

        # ========== Customer Bill
        customer_bill_frame = LabelFrame(self.root, text="Customer Bill", bg=bg_color1, fg="white",
                                            font=self.frame_label_font, bd=6, relief=GROOVE, padx=10, pady=5)
        customer_bill_frame.pack(side=LEFT, anchor=N, fill=X)

        billandpayment = Frame(customer_bill_frame, bd=2, relief=SUNKEN, bg=bg_color2)
        billandpayment.pack(side=TOP, anchor=NW, fill="both")

        # Bill Number
        bill_number_lbl = Label(billandpayment, text="Bill Number", font=self.entry_label_font1, bg=bg_color2)
        bill_number_lbl.grid(row=0, column=0, padx=5)

        bill_number_txt = Entry(billandpayment,  bd=10, relief=SUNKEN, width=15, bg=bg_color2, font="Helvetica 16 bold")
        bill_number_txt.grid(row=0, column=1, sticky="w")

        # Payment Details
        payment_method_lbl = Label(billandpayment, text="Payment Method", bg=bg_color2, fg="black",
                                    font=self.entry_label_font1)
        payment_method_lbl.grid(row=0, column=2, padx=8, sticky="e")

        methods = [
                "Google Pay",
                "Paytm",
                "Cash",
                "Check-Payment",
                "Credit",
        ]

        self.clicked = StringVar()
        self.clicked.set("Select Method")

        payment_methods = OptionMenu(billandpayment, self.clicked, *methods)
        payment_methods.grid(row=0, column=3, pady=5, sticky="w")

        # Parts Table
        parts_table_frame = Frame(customer_bill_frame, bd=5, relief=SUNKEN, height=1)
        parts_table_frame.pack(side=LEFT, anchor=NE)

        scroll_y = Scrollbar(parts_table_frame, orient=VERTICAL)

        self.parts_table = ttk.Treeview(parts_table_frame, yscrollcommand=scroll_y.set)

        table_style = ttk.Style()
        table_style.configure("Treeview",
                        background = "silver",         
                        foreground = "black",
                        rowheight=28,
                        )
        table_style.map('Treeview', background=[('selected', f'{bg_color1}')], foreground=[('selected', 'white')])

        self.parts_table['columns'] = ("Description", "Unit Cost", "Quantity", "Labour", "Amount")

        self.parts_table.column("#0", width=35, minwidth=38)
        self.parts_table.column("Description", width=200, minwidth=200)
        self.parts_table.column("Unit Cost", width=70, minwidth=70)
        self.parts_table.column("Quantity", width=54, minwidth=54)
        self.parts_table.column("Labour", width=60, minwidth=60)
        self.parts_table.column("Amount", width=70, minwidth=70)

        self.parts_table.heading("#0", text="Sr.No")
        self.parts_table.heading("Description", text="Description")
        self.parts_table.heading("Unit Cost", text="Unit Cost")
        self.parts_table.heading("Quantity", text="Quantity")
        self.parts_table.heading("Labour", text="Labour")
        self.parts_table.heading("Amount", text="Amount")

        scroll_y.pack(side=RIGHT, fill=Y)
        scroll_y.config(command=self.parts_table.yview)
        self.parts_table.pack(side=TOP)
            
        self.note_window = Frame()
        self.note_window.pack(fill=BOTH)

        # Bill area
        self.bill = Text(customer_bill_frame, width=41, height=23)
        self.bill.pack()


        # Grid Configureing For Responsive Window
        bill_options_frame.grid_columnconfigure((0, 1, 2, 3), weight=1)
        bill_details.grid_columnconfigure((1, 3), weight=1)
        customer_details_frame.grid_columnconfigure((1, 3, 5), weight=1)
        vehicle_details_frame.grid_columnconfigure((1, 4, 6), weight=1)
        part_details_frame.grid_columnconfigure((0, 1), weight=1)
        selected_part_details.grid_columnconfigure((1), weight=1)
        btn_frame.grid_columnconfigure((0,1), weight=5)
        billandpayment.grid_columnconfigure((1, 3), weight=1)
        part_details_frame.grid_rowconfigure((0, 1), weight=1)
        btn_frame.grid_rowconfigure(0, weight=4)
        bill_options_frame.grid_rowconfigure(0, weight=4)
        bill_details.grid_rowconfigure((0,1), weight=100)
        selected_part_details.grid_rowconfigure((1,2,3,4), weight=1)

        self.root.bind('<Configure>', self.change_font_size)

    # Changing Font Size According To The Window
    def change_font_size(self, e):
        width = self.root.winfo_width()
        height = self.root.winfo_height()
            
        if width <= 1460 and height <= 730:
            self.frame_label_font.config(size=16)
            self.entry_label_font1.config(size=14)
            self.entry_label_font2.config(size=15)
            self.entry_font.config(size=12)
            self.btn_font.config(size=13)
        else:
            self.frame_label_font.config(size=18)
            self.entry_label_font1.config(size=17)
            self.entry_label_font2.config(size=16)
            self.entry_font.config(size=14)
            self.btn_font.config(size=15)

app = Tk()
software = Application(app)
app.mainloop()