Tkinter 창을 어떻게 닫습니까?
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()
즉,이 root.mainloop()
경우 여전히 백그라운드에서 실행됩니다 quit()
명령이 실행됩니다.
root.destroy()
destroy()
명령이 사라지는 동안 root.mainloop()
즉 root.mainloop()
중지합니다.
그냥 프로그램을 종료 할대로 사용해야하므로 그래서 root.destroy()
같이 IT는 중지됩니다 mainloop()
.
그러나 무한 루프를 실행하고 Tk 창을 파괴하고 싶지 않고 root.mainloop()
줄마다 일부 코드를 실행 하려면 root.quit()
. 전의:
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()
Python 프로그램을 종료하는 일반적인 방법 :
sys.exit()
(종료 상태를 전달할 수도 있음) 또는
raise SystemExit
Tkinter 프로그램에서 잘 작동합니다.
나는 당신이 Tkinter의 종료 기능을 잘못 이해했다고 생각합니다. 이 함수는 정의 할 필요가 없습니다.
먼저 다음과 같이 함수를 수정해야합니다.
from Tkinter import *
root = Tk()
Button(root, text="Quit", command=root.quit).pack()
root.mainloop()
그런 다음 '.pyw'접미사를 사용하여이 파일을 저장하고 '.pyw'파일을 두 번 클릭하여 GUI를 실행해야합니다. 이번에는 버튼을 클릭하여 GUI를 종료 할 수도 있습니다. 불쾌한 DOS 창이 없습니다. ( '.py'파일을 실행하면 종료 기능이 실패합니다.)
혼란시 조명 ...
def quit(self):
self.destroy()
exit()
A) destroy ()는 메인 루프를 중지하고 창을 죽이지 만 파이썬은 계속 실행됩니다.
B) exit ()는 전체 프로세스를 중지합니다
누군가 destroy ()가하는 일을 놓친 경우를 명확히하기 위해 OP는 또한 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
가장 쉬운 방법은 빨간색 버튼을 클릭하는 것입니다 (macOS에서는 가장 왼쪽, Windows에서는 가장 오른쪽). 특정 기능을 버튼 위젯에 바인딩하려면 다음을 수행 할 수 있습니다.
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()
commm으로 설정하면 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()
아래 코드 스 니펫. 저는 작은 시나리오를 제공하고 있습니다.
import tkinter as tk
from tkinter import *
root = Tk()
def exit():
if askokcancel("Quit", "Do you really want to quit?"):
root.destroy()
menubar = Menu(root, background='#000099', foreground='white',
activebackground='#004c99', activeforeground='white')
fileMenu = Menu(menubar, tearoff=0, background="grey", foreground='black',
activebackground='#004c99', activeforeground='white')
menubar.add_cascade(label='File', menu=fileMenu)
fileMenu.add_command(label='Exit', command=exit)
root.config(bg='#2A2C2B',menu=menubar)
if __name__ == '__main__':
root.mainloop()
나는 빈 창을 여기에 만든 & I는 하나의 옵션 추가 같은 창 (루트 창)에 파일 메뉴 옵션을 추가 한 종료 .
그런 다음 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()
아마도 당신이 한 프레임에 루트와 같은 매개 변수를 보낼 수 있습니다. 그래서 당신이 그것을 끝내고 싶다면 당신은 당신의 아버지에게 전화를해서 그의 자녀를 한 명씩 닫는 대신 모든 것을 닫을 수 있도록해야합니다.
참고URL : https://stackoverflow.com/questions/110923/how-do-i-close-a-tkinter-window
'IT박스' 카테고리의 다른 글
uint8_t, uint_fast8_t 및 uint_least8_t의 차이점 (0) | 2020.11.01 |
---|---|
SQLAlchemy를 통해 임의의 행 가져 오기 (0) | 2020.11.01 |
모달보기 컨트롤러 표시 및 닫기 (0) | 2020.11.01 |
XAML 만 사용하여 단색 삼각형 그리기 (0) | 2020.11.01 |
알 수없는 인코더 'libx264' (0) | 2020.11.01 |