2017-04-30 13 views
1

나는 기본적인 GUI를 만들기 위해 매우 기본적인 단어 게임을 만들었습니다. 캔버스에 이미지를 놓은 다음 이미지의 단어 위에 텍스트 상자를 배치하는 파일을 테스트하고 있습니다.왜 두 개의 별도 창에서 계속 팝업됩니까? (Python)

같은 창을 사용할 수없는 것 같습니다. 텍스트 상자는 이미지와 다른 창에 나타납니다. 이 코드를 작성하는 방법은 여러 가지로 다양하게 시도했지만 이해할 수는 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.

""" 
Python Delete2.py 
""" 


from tkinter import * 
from PIL import Image, ImageTk 

class App(Frame): 
    def __init__(self, master): 
     Frame.__init__(self, master) 
     self.columnconfigure(0,weight=1) 
     self.rowconfigure(0,weight=1) 
     self.original = Image.open('687ee377f1820465b443950055671cb6.png') 
     self.image = ImageTk.PhotoImage(self.original) 
     self.display = Canvas(self, bd=0, highlightthickness=0) 
     self.display.create_image(0, 0, image=self.image, anchor=NW, tags="IMG") 
     self.display.grid(row=0, sticky=W+E+N+S) 
     self.pack(fill=BOTH, expand=1) 
     self.bind("<Configure>", self.resize)  


    def resize(self, event): 
     size = (event.width, event.height) 
     resized = self.original.resize(size,Image.ANTIALIAS)    
     self.image = ImageTk.PhotoImage(resized) 
     self.display.delete("IMG") 
     self.display.create_image(0, 0, image=self.image, anchor=NW, tags="IMG") 
     madlib = Tk()  
     Label(madlib, text="Please pick an Adjective.").grid(row=0) 
     e1 = Entry(madlib) 
     e1.grid(row=0, column=1) 

root = Tk() 
app = App(root) 
app.mainloop() 
root.destroy() 
+0

'라벨'을 말하는 '텍스트 상자'입니까? – kabanus

답변

2

Tk() 

는 코드에서 한 번에 표시해야 -이 메인 화면입니다. 두 번 호출하면 두 개의 기본 창이 있습니다. 두 번째 창을 원한다고해도 Toplevel을 사용해야합니다. 나는 당신의 클래스의 루트 창을 유지할 것 :

self.root = master 

__init__에. 그런 다음이 창에 내용을 포함하려면 사용하십시오!

Label(self, text="Please pick an Adjective.").grid(row=0) 
e1 = Entry(self) 

드롭 madlib : 이미 루트에 포함 된 프레임 - 당신이 특정 프레임에 포함하려면

Label(self.root, text="Please pick an Adjective.").grid(row=0) 
e1 = Entry(self.root) 

(아마 더 나은 아이디어)은 단지 자신을 사용합니다.

+0

큰 충고! 고마워, 내가 알아 낸 것 같아! 내 프로그램에 맞게 모든 것을 조정하려고합니다. 감사! –