1

我创建了一个非常基本的文字游戏,我想为其创建一个基本的 gui。我正在测试一个将图像放在画布上的文件,然后将文本框放置在图像顶部。

我似乎无法让它使用同一个窗口。文本框显示在与图像不同的窗口中。我已经尝试了很多不同的方法来编写这段代码,但似乎无法弄清楚。任何帮助将不胜感激。

"""
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()
4

1 回答 1

2

Tk()

只应在您的代码中出现一次 - 它是主窗口。你调用它两次,所以你有两个主窗口。即使您想要第二个窗口Toplevel也是您应该使用的。我会将根窗口保留在您的班级中:

self.root = master

__init__. 然后,当您想在此窗口中嵌入东西时,请使用它!

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

如果您想嵌入特定的框架(可能是更好的主意),只需使用 self - 它已经是嵌入根中的框架:

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

下降madlib

于 2017-04-30T18:51:45.140 回答