문제

어떻게 종료 Tkinter 프로그램입니까?말하자 나는 이 코드:

from Tkinter import *

def quit():
    # code to exit

root = Tk()
Button(root, text="Quit", command=quit).pack()
root.mainloop()

어떻게 정의 quit 기능을 종료하니까?

도움이 되었습니까?

해결책

당신이 사용해야 한다 destroy() 을 닫 tkinter 창입니다.

from Tkinter import *

root = Tk()
Button(root, text="Quit", command=root.destroy).pack()
root.mainloop()

설명:

root.quit()

위의 라인 root.mainloop() i.e root.mainloop() 여전히 백그라운드에서 실행하는 경우 quit() 명령은 실행됩니다.

root.destroy()

destroy() 명령을 소멸 out root.mainloop() i.e root.mainloop() 가 중지됩니다.

그래서 당신이 원하는 프로그램을 종료한 그래서 당신이 사용해야 한다 root.destroy() 그것이이지 mainloop().

하지만 실행하고 싶다면 일부는 무한 루프리고 당신이 원하지 않을 파괴하는 Tk 창을 실행하려면 몇 가지 코드 root.mainloop() 라인을 사용해야 합니다 root.quit().Ex:

from Tkinter import *
def quit():
    global root
    root.quit()

root = Tk()
while True:
    Button(root, text="Quit", command=quit).pack()
    root.mainloop()
    #do something

다른 팁

def quit()
    root.quit()

def quit()
    root.destroy()
import Tkinter as tk

def quit(root):
    root.destroy()

root = tk.Tk()
tk.Button(root, text="Quit", command=lambda root=root:quit(root)).pack()
root.mainloop()

나는 생각을 잘못 이해하고 종료한 기능의 Tkinter.이 기능이 필요하지 않습니다.

첫째,수정해야 합니다 당신의 기능은 다음과 같습니다:

from Tkinter import *
root = Tk()
Button(root, text="Quit", command=root.quit).pack()
root.mainloop()

그 후,당신은 사용해야 한다'.pyw'접미사 저장하는 파일을 두 번 클릭합'.pyw'파일을 실행하는 GUI,이번에 종료할 수 있습니 GUI 를 클릭의 버튼을 찾을 수 있습니다 또한 없을 것이라고 불쾌한 DOS window.(실행할 경우'.py'파일,종료 기능이 실패할 것이다.)

일반적인 방법을 끝내는 파이썬 프로그램:

sys.exit()

(을 전달할 수도 있습는 종료 상태)또는

raise SystemExit

잘 작동에 Tkinter 프로그램입니다.

조명에 혼란의 경우...

def quit(self):
    self.destroy()
    exit()

A)destroy()를 중지 mainloop 그리고 죽음 창이지만,잎 python 실행

B)종료를()지 전체 프로세스

그냥을 명확히하는 경우에는 사람이 무엇을 파괴하()하고 있었고,OP 또한 요청하는 방법"최종"a tkinter 프로그램입니다.

idlelib.PyShell 모듈 root 변수 유형 Tk 정의된 글로벌

의 끝에 PyShell.main() 함수를 호출 root.mainloop() 기능는 무한 루프를 및 실행까지 루프가에 의해 중단 root.quit() 기능입니다.따라서, root.quit() 만 인터럽트의 실행 mainloop

을 파괴하기 위해 모든 위젯과 관련하여는 idlelib 창 root.destroy() 호출되어야 하는 마지막 줄의 idlelib.PyShell.main() 기능입니다.

당신이 사용할 수 있습니다:

root.destroy()

root.quit()

을 작동하지 않는 경우,변경이 뿌리를 어떤 이제까지 당신의 변수에서 시작하의 프로그램

import tkinter

main = Tk()

main.destroy()

main.mainloop

가장 쉬운 방법은 것을 클릭의 빨간 버튼(왼쪽에서 맥오고 오른쪽에서 윈도우).에 바인딩하려는 경우는 특정 기능의 위치,당신은 작업을 수행 할 수 있습니다:

class App:
    def __init__(self, master)
        frame = Tkinter.Frame(master)
        frame.pack()
        self.quit_button = Tkinter.Button(frame, text = 'Quit', command = frame.quit)
        self.quit_button.pack()

거나,를 것을 조금 더 복잡한,사용하여 프로토콜 처리기와 destroy() 방법입니다.

import tkMessageBox

def confirmExit():
    if tkMessageBox.askokcancel('Quit', 'Are you sure you want to exit?'):
        root.destroy()
root = Tk()
root.protocol('WM_DELETE_WINDOW', confirmExit)
root.mainloop()

는 경우에는 사람자는 자신의 탈출 버튼을 닫는 전체 GUI:

master = Tk()
master.title("Python")

def close(event):
    sys.exit()

master.bind('<Escape>',close)
master.mainloop()

당신은 단지 입력할 필요가 이:

root.destroy()

고 당신도 필요하지 않 quit()함수 원인을 설정할 때는 것으로 명령이 종료는 전체 프로그램입니다.

def quit1():
     root.destroy()

Button(root, text="Quit", command=quit1).pack()
root.mainloop()
import sys
from Tkinter import *
def quit():
    sys.exit()
root = Tk()
Button(root, text="Quit", command=quit).pack()
root.mainloop()

해야 할 무엇을 요청하고 있습니다.

대 메뉴 바

def quit():
    root.destroy()

menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=quit)
menubar.add_cascade(label="menubarname", menu=filemenu)
root.config(menu=menubar)
root.mainloop()

내가 사용하여 아래 코드는 위의 출구 Tkinter 창:

from tkinter import*
root=Tk()
root.bind("<Escape>",lambda q:root.destroy())
root.mainloop()

from tkinter import*
root=Tk()
Button(root,text="exit",command=root.destroy).pack()
root.mainloop()

from tkinter import*
root=Tk()
Button(root,text="quit",command=quit).pack()
root.mainloop()

from tkinter import*
root=Tk()
Button(root,text="exit",command=exit).pack()
root.mainloop()

이것을 보십시오:

from Tkinter import *
import sys
def exitApp():
    sys.exit()
root = Tk()
Button(root, text="Quit", command=exitApp).pack()
root.mainloop()

려고 합니다.

    self.parent.destroy() 
    self.parent.quit()

어쩌면 당신은 보내과 같은 루트 매개 변수는 프레임했다.그래서 당신이 원하는 경우 그것을 마무리 전화를 해야 너의 아버지는 그래서 그는 그것을 닫을 수 있습니다,모두 대신 폐쇄의 각 하나는 그분의 자녀입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top