Окно Tkinter все еще не появляется - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать простой графический интерфейс tkinter и прочитал онлайн, чтобы добавить .mainloop () в конец моего кода, чтобы появилось окно. Оно все еще не появляется.

Там нет сообщения об ошибке и просто

Process finished with exit code 0

Я приложил свой код.

Любая помощь очень ценится

def window():
    global FPS
    global maxFPS
    root = Tk()
    root.title('Camera Tracker')
    root.geometry('500x300')

def quitfunc():

    quitm=Tk()
    quitm.title('Quit')
    quitm.geometry('200x100')

    yesbutton=Button(quitm,text='Yes',command=quit)
    nobutton =Button(quitm,text='No',command=quitm.destroy)

    yesbutton.place(x=50,y=60)
    nobutton.place(x=130,y=60)
    reassure = Label(quitm,text='Are you sure you want to quit?')
    reassure.place(x=17,y=20)

    quitm.mainloop()

sbview = Label(root, text=FPS)
sbview.place(y=50, x=50)

def FPScallback(self):
    global FPS
    FPS = round(sb.get())
    if 10 > FPS < 18 or 29 < FPS:
        sbview.config(fg='orange')
    elif FPS < 10:
        sbview.config(fg='red')
    else:
        sbview.config(fg='green')
    sbview.config(text=FPS)

quitbutton = Button(root,command=quitfunc,text='Quit')
quitbutton.pack()

sb = ttk.Scale(root, from_=0, to=maxFPS, command=FPScallback, orient=HORIZONTAL)
sb.place(y=100, x=100)
sb.set(FPS)

root.mainloop()

Спасибо A Bunch In Advance

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы создадите root изнутри функции, она не будет доступна при выходе из функции. В моем примере я создаю root, а также некоторые глобальные переменные в глобальной области видимости.

Чтобы спросить пользователя, хочет ли он выйти, проще использовать стандартную библиотеку messagebox. Если вы хотите отследить любую попытку закрыть приложение (например, ALT-F4 ), вам следует повторно исследовать root.protocol("WM_DELETE_WINDOW", do_exit), который запускает функцию do_exit, когда приложение хочет выйти любым способом.

from tkinter import *
from tkinter import ttk
from tkinter import messagebox  # Quit dialog

root = Tk()                     # Create root in the global scope 
root.title('Camera Tracker')    # so the functions can find it 
root.geometry('500x300')

maxFPS = 50     # Initiate variables in the global scope
FPS = 25

sbview = Label(root, text=FPS)
sbview.place(y=50, x=50)

def quitfunc():
    result = messagebox.askyesno('Quit', 'Are you sure you want to quit?')
    if result:
        root.destroy()

def FPScallback(self):
    global FPS
    FPS = round(sb.get())
    if 10 > FPS < 18 or 29 < FPS:
        sbview.config(fg='orange')
    elif FPS < 10:
        sbview.config(fg='red')
    else:
        sbview.config(fg='green')
    sbview.config(text=FPS)

sb = ttk.Scale(root, from_=0, to=maxFPS, command=FPScallback, orient=HORIZONTAL)
sb.place(y=100, x=100)
sb.set(FPS)

quitbutton = Button(root, command=quitfunc, text='Quit')
quitbutton.pack()

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