Python 调用tk.tk()一次,但意外得到两个窗口?
我正在使用python 3.8.5和tkinter 8.6。我正在学习使用tkinter。我试图制作一个简单的表单,但由于某些原因,当我运行代码时,我得到了两个窗口。其中一个窗口包含了我所期望的所有细节,但是还有一个未被实现的未调用窗口,其中没有任何内容。我无法从我的代码中看出为什么还有第二个窗口,因为我只有一行调用Python 调用tk.tk()一次,但意外得到两个窗口?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在使用python 3.8.5和tkinter 8.6。我正在学习使用tkinter。我试图制作一个简单的表单,但由于某些原因,当我运行代码时,我得到了两个窗口。其中一个窗口包含了我所期望的所有细节,但是还有一个未被实现的未调用窗口,其中没有任何内容。我无法从我的代码中看出为什么还有第二个窗口,因为我只有一行调用window.mainloop(),并且我只创建了一个窗口变量 import tkinter as tk WIDTH=50 HEIGHT=1 BG="white"
window.mainloop()
,并且我只创建了一个窗口变量
import tkinter as tk
WIDTH=50
HEIGHT=1
BG="white"
FG="black"
COMPONENTS_MAP = (
{"label":"Name","type":"text"},
{"label":"Description","type":"text_area"},
{"type":"submit"}
)
COMPONENTS = []
for mapping in COMPONENTS_MAP:
if mapping["type"] == "text_area":
COMPONENTS.append(
tk.Label(
text=mapping["label"],
foreground=FG,
background=BG,
width=WIDTH
)
)
COMPONENTS.append(
tk.Text(
fg=FG,
bg=BG,
width=WIDTH,
height=3
)
)
if mapping["type"] == "text":
COMPONENTS.append(
tk.Label(
text=mapping["label"],
foreground=FG,
background=BG,
width=WIDTH
)
)
COMPONENTS.append(
tk.Entry(
fg=FG,
bg=BG,
width=WIDTH
)
)
if mapping["type"] == "submit":
COMPONENTS.append(
tk.Button(
text="Submit",
width=WIDTH,
height=HEIGHT,
bg=BG,
fg=FG
)
)
window = tk.Tk()
for component in COMPONENTS:
component.pack()
window.mainloop()
看起来像这样
在初始化小部件之后,您可以初始化
窗口。移动window=tk.tk()
开始您的代码(例如在导入之后)。在初始化小部件之后初始化window
。将window=tk.tk()
移动到代码的开头(例如,在导入之后)。在调用tk()
之前,您正在创建各种小部件-如果没有小部件居住的tk
实例,这是不可能的,因此会自动为您创建一个小部件。您需要将您的Tk()
调用向上移动,以便这是第一次进行Tkinter调用。谢谢您解决了这个问题。如果你回复我,我会给你解决方案。在调用Tk()
之前,你正在创建各种小部件-如果没有Tk
的实例,小部件就无法生存,因此会自动为你创建一个小部件。您需要将您的Tk()
调用向上移动,以便这是第一次进行Tkinter调用。谢谢您解决了这个问题。如果你回复我,我会给你答案。