окно tkinter не отображается - PullRequest
0 голосов
/ 26 октября 2019

Я новичок в python и пытаюсь разработать приложение для веб-поиска. В настоящее время я не получаю никаких сообщений об ошибках, однако графический интерфейс не отображается при запуске кода. Любая помощь приветствуется.

Я искал похожие проблемы со стековым потоком, но не смог найти ничего подходящего.

import tkinter as tk
from tkinter import ttk

LARGE_FONT=("Helvetica",12)

class MMA_fighters(tk.Tk):

    def __init__(self,*args,**kwargs):
        tk.Tk.__init__(self,*args,**kwargs)

        tk.Tk.wm_title(self,"Mixed Martial Arts Fighters")

        container =tk.Frame(self)
        container.pack(side="top",fill="both",expand="true")
        container.grid_rowconfigure(0,weight=1)
        container.grid_columnconfigure(0,weight=1)

        self.frames={ }

        for F in (StartPage,MainPage):

            frame=F(container,self)
            self.frames[F]=frame
            frame.grid(row=0,column=0)

        self.show_frame(StartPage)

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

class StartPage(tk.Frame):

    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)
        label=ttk.Label(self,text="Mixed Martial Arts Fighters", font=LARGE_FONT)
        label.pack(pady=10, padx=10)
        label=ttk.Label(self,text="Select 'Continue' for more information on your favorite MMA fighter", font=LARGE_FONT)
        label.pack(pady=10, padx=10)

        button1=ttk.Button(self,text="Continue",command=lambda :controller.show_frame(MainPage))
        button1.pack()
        button2=ttk.Button(self,text="Exit",command=quit())
        button2.pack()


class MainPage(tk.Frame):

    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)
        label=ttk.Label(self,text="Fighter",font=LARGE_FONT)
        label.pack(pady=10,padx=10)

app=MMA_fighters()
app.mainloop()

Ожидаемый результат - появится окно с выходом и продолжением элементов, переходящих на вторую страницу. Фактический результат - окно не появляется.

1 Ответ

0 голосов
/ 26 октября 2019

command= ожидает имя функции без () - так называемого "обратного вызова" - и когда вы нажимаете кнопку, тогда mainloop получит это имя и будет использовать () для его запуска.

Но выиметь command=quit(), поэтому он запускает quit() при запуске и выходе из программы.

Вам нужно

command=quit

Вы можете использовать app.destroy вместо quit, чтобы сообщить окнучто вы хотите завершить программу, и он должен закрыть окно, прежде чем он завершит программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...