Tkinter Windows 配置不起作用

问题描述 投票:0回答:1

我正在尝试在 Tkinter() 中配置所有 winsow 的网格。

例如:

import tkinter as Tk

window = Tk()
window.state('zoomed')
window.rowconfigure(0, weight=1, uniform='a')
winsdow.columnconfigure(0, weight=1, uniform='a')

window_home = Frame(window)
window_documents = Frame(window)
window_form = Frame(window)

这是我的代码的基本结构。我想做的就是使用 for 循环配置框架 window_home、window_documents 和 window_form,如下所示:

for frame in window:
  frame.rowconfigure(0, weight=1, uniform='a')
  frame.columnconfigure(0, weight=1, uniform='a')

但是“for frame”之后的“in”一词在 vscode 中看起来并没有激活。看起来我在语法上做错了什么,但我不知道是什么。

比我聪明的人(一点也不罕见)可以帮助解决这个问题吗?

我什至不知道该尝试什么。 IDE 只是不告诉我代码有什么问题。

python for-loop tkinter
1个回答
0
投票

首先,您需要将第 3 行更改为

window = tk.Tk()
,我将 import 小写,因为这是一个更好的命名约定。

其次,要显示窗口,您必须在代码末尾调用

window.mainloop()

第三,

window
是不可迭代的,它是一个tk.Tk类,所以你不能使用
for
循环来迭代它。由于只有 3 帧,我不会费心使用任何类型的迭代,只会执行以下操作:

import tkinter as tk

window = tk.Tk()
window.state('normal')
window.rowconfigure(0, weight=1, uniform='a')
window.columnconfigure(0, weight=1, uniform='a')

window_home = tk.Frame(window)
window_home.rowconfigure(0, weight=1, uniform='a')
window_home.columnconfigure(0, weight=1, uniform='a')

window_documents = tk.Frame(window)
window_documents.rowconfigure(0, weight=1, uniform='a')
window_documents.columnconfigure(0, weight=1, uniform='a')

window_form = tk.Frame(window)
window_form.rowconfigure(0, weight=1, uniform='a')
window_form.columnconfigure(0, weight=1, uniform='a')

window.mainloop()

如果您坚持使用

for
循环,您可以执行以下操作:

frames = [window_home, window_documents, window_form]
for frame in frame:
    frame.rowconfigure(0, weight=1, uniform='a')
    frame.columnconfigure(0, weight=1, uniform='a')
© www.soinside.com 2019 - 2024. All rights reserved.