为什么这会在两个单独的 windows 中不断弹出? (Python)
Why does this keep popping up in two seperate windows? (Python)
我创建了一个非常基本的文字游戏,我想为其创建一个基本的图形用户界面。我正在测试一个文件,该文件会将图像放在 canvas 上,然后在图像上方放置文字文本框。
我似乎无法让它使用相同的 window。文本框显示的 window 与图像不同。我已经尝试了很多不同的方法来编写这段代码,但似乎无法弄清楚。任何帮助将不胜感激。
"""
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()
这个
Tk()
应该只在您的代码中出现一次 - 它是主要的 window。你调用它两次,所以你有两个主要 windows。即使你想要第二个 window Toplevel
也是你应该使用的。我会在你的 class:
中保留根 window
self.root = master
在 __init__
中。然后当你想在这个 window 中嵌入东西时,然后使用它!
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
.
我创建了一个非常基本的文字游戏,我想为其创建一个基本的图形用户界面。我正在测试一个文件,该文件会将图像放在 canvas 上,然后在图像上方放置文字文本框。
我似乎无法让它使用相同的 window。文本框显示的 window 与图像不同。我已经尝试了很多不同的方法来编写这段代码,但似乎无法弄清楚。任何帮助将不胜感激。
"""
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()
这个
Tk()
应该只在您的代码中出现一次 - 它是主要的 window。你调用它两次,所以你有两个主要 windows。即使你想要第二个 window Toplevel
也是你应该使用的。我会在你的 class:
self.root = master
在 __init__
中。然后当你想在这个 window 中嵌入东西时,然后使用它!
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
.