首页 > 解决方案 > Python tkinter 在做某事成功后进入新的页面框架应用程序崩溃了

问题描述

尝试执行 card_pay() 方法,成功后进入新的 Page_6(Frame) ,另外我设置了一个按钮点击到下一页,按钮 Next_Page() 正在工作,但是方法 card_pay 失败,会导致应用程序崩溃。以下是我更改页面的方法。

self.page_6 = Page_6(self.root)
self.pack_forget()
self.page_6.pack()

我的代码:

class Page_5(Frame): 
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.root = master 
        self.createPage()
    def createPage(self):
        search_card=True
        Page_Image = Image.open('D:/API_nomal/page_image/5.png')
        Page_Image_PIL=ImageTk.PhotoImage(Page_Image)
        Button_Image = Image.open('D:/API_nomal/page_image/confirm.png')
        Button_Image_PIL=ImageTk.PhotoImage(Button_Image)
        label=Label(self,image=Page_Image_PIL)
        label.image=Page_Image_PIL
        button_pay=Button(self,image = Button_Image_PIL,command=lambda: self.Next_Page(),border='0',bg='white', takefocus = 0)
        button_pay.image=Button_Image_PIL
        button_pay.place(x=877, y=895)
        label.grid(row=0, column=0)
        car_pay_thread = Thread(target=self.card_pay)
        car_pay_thread.start()
    def card_pay(self):
        global search_card
        while debug_flag==True:
            try:
                if search_card== True:
                    self.page_6 = Page_6(self.root)
                    self.pack_forget()
                    self.page_6.pack()
            except Exception as e :
                print traceback.format_exc()

    def Next_Page(self):
        self.page_6 = Page_6(self.root)
        self.pack_forget()
        self.page_6.pack()

class Page_6(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.root = master
        self.createPage()

    def createPage(self):
        Page_Image = Image.open('D:/API_nomal/page_image/6.png')
        Page_Image_PIL=ImageTk.PhotoImage(Page_Image)
        label=Label(self,image=Page_Image_PIL)
        label.bind("<Button-1>",lambda e=Page_Image_PIL:self.Next_Page())
        label.pack()

    def Next_Page(self):
        self.inital_page = Initial_Page(self.root)
        self.pack_forget()

标签: tkinter

解决方案


推荐阅读