간단한 madlib 스타일 게임을 만들고 있는데 약간의 문제가 있습니다. 캔버스에 결과를 표시하고 표시 할 수 없습니다.tkinter 캔버스의 일부를 지우고 제출을 누를 때 표시되는 방법은 무엇입니까?
다음 코드는 이미지를 캔버스의 배경으로 배치합니다. 그런 다음 삽입 할 모든 단어에 대해 레이블과 입력 필드를 2 열에 배치합니다. 페이지 하단에 제출 버튼이 있습니다. 배경 이미지를 제외하고 모든 것을 지우는 방법을 알아낼 수 없으므로 사용자 단어가 삽입 된 상태에서 이야기를 표시 할 수 있습니다. 콜백()에 배치하면 배경을 지우고 그 밖의 모든 것을 유지합니다. 나는 반대를 원한다.
from tkinter import *
from PIL import Image, ImageTk
canvas_width = 360
canvas_height = 525
file = r"C:\Users\kraak\Desktop\PyCharm Community Edition 2017.1.2\borderedpaper.GIF"
master = Tk()
canvas = Canvas(master, width=canvas_width, height=canvas_height)
old_img = PhotoImage(file=file)
new_img = old_img.subsample(3, 3)
canvas.create_image(-11, -10, anchor=NW, image=new_img)
canvas.create_window(0, 0, height=1, width=1, anchor=NW)
canvas.create_text(0, 0, text="Test")
e1 = Entry(canvas)
canvas.create_window(250, 60, window=e1, height=15, width=100)
label = Label(text="Enter an adjective.")
label.place(x=40, y=50)
e1.focus_set()
e2 = Entry(canvas)
canvas.create_window(250, 85, window=e2, height=15, width=100)
label = Label(text="Enter a nationality.")
label.place(x=40, y=75)
e2.focus_set()
def callback():
print("Pizza was invented by a " + (e1.get()) + " " + (e2.get()))
def answer():
button = Button(text="Submit.", command=callback)
button.place(x=150, y=460)
answer()
canvas.pack()
mainloop()
[** 최소 ** 완전하고 검증 가능한 예] (http://stackoverflow.com/help/mcve)를 작성하십시오. 캔버스를 지우는 데 문제가있는 경우 예제에 12 개의 항목 위젯과 레이블이 필요하지 않습니다. –
"취소"란 무엇을 의미합니까? 모든 위젯을 삭제 하시겠습니까? 아니면 간단히 입력 위젯 및/또는 레이블을 비워 두시겠습니까? –
요청에 따라 본보기를 단축했습니다. 배경 이미지를 제외한 모든 위젯을 삭제하고 싶습니다. 모든 것이 삭제 된 후 사용자가 삽입 한 답변이 스토리와 함께 인쇄되기를 원합니다. –