Python Tkinter 中的网格正在无故调整大小?
Grid in Python Tkinter is Resizing Without Reason?
我正在 Python 创建待办事项列表,我必须在开始时安排 3 个元素。其中包括用于翻阅笔记和待办事项的笔记本。其他的只是带有图像的标签。这是代码。我的问题是我不确定应该如何将这些图像放在网格上。位于第 1 行第 0 列的笔记本非常大,导致第 2 列一直向右移动,这摆脱了将两列中的两个项目放在第 1 行中彼此靠近的能力。这是代码。
from tkinter import *
import datetime
from tkinter import ttk
import tkinter as tk
from tkinter.scrolledtext import ScrolledText
root = Tk()
root.title("To - Do List")
root.geometry("1200x600")
root.configure(background = "white")
# Variable list:
content = ttk.Frame(root)
content.grid(column=0, row=0, sticky=(N, S, E, W))
Photo1= PhotoImage(file="Full Circle Image Icon Docs.png")
Photo2 = PhotoImage(file="To - Do List Label.png")
TasksList = ttk.Notebook()
Task1 = ttk.Frame(TasksList)
Task2 = ttk.Frame(TasksList)
TasksList.add(Task1, text = 'One')
TasksList.add(Task2, text = 'Two')
TasksList.grid(row=2, column=0, sticky=W)
root.columnconfigure(0, weight=0)
root.rowconfigure(0, weight=0)
Label(image=Photo1, bg="black", borderwidth=0, highlightthickness=0).grid(row=0, column=0, sticky=W)
Label(image=Photo2, borderwidth=0, highlightthickness=0).grid(row=0, column=1, sticky=W)
root.mainloop()
将不胜感激。非常感谢你们!
将网格设为三列宽,然后将列权重设置为第三列以使其随 window 展开。然后将标签放在第一列和第二列中。
然后让 TasksList 用以下内容填充所有三列:columnspan=3
。
另外,我将 TasksList 放在第二行,并让它的权重 =1 以使用 window 进行扩展。看这个例子:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("500x600+800+50")
# Set which cols and rows should expand with window
root.columnconfigure(2, weight=1)
root.rowconfigure(1, weight=1)
TasksList = ttk.Notebook(root)
Task1 = ttk.Frame(TasksList)
Task2 = ttk.Frame(TasksList)
TasksList.add(Task1, text = 'One One One One One One')
TasksList.add(Task2, text = 'Two Two Two Two Two Two')
TasksList.grid(row=1, column=0, sticky=N+W, columnspan=3)
# Make the TaskList span all three columns ------^
Photo1= PhotoImage(file="test.gif")
Photo2 = PhotoImage(file="test.gif")
# Put labels in root
Label(root, image=Photo1, bd=0).grid(row=0, column=0, sticky=W)
Label(root, image=Photo2, bd=0).grid(row=0, column=1, sticky=W)
# Don't put anything in column=2
root.mainloop()
在 row=0 中,第三列(空)将扩展以填充 window。在 row=1 中,TasksList 将扩展以填充 window。有关详细信息,请参阅 The Tkinter Grid Geometry Manager。
我正在 Python 创建待办事项列表,我必须在开始时安排 3 个元素。其中包括用于翻阅笔记和待办事项的笔记本。其他的只是带有图像的标签。这是代码。我的问题是我不确定应该如何将这些图像放在网格上。位于第 1 行第 0 列的笔记本非常大,导致第 2 列一直向右移动,这摆脱了将两列中的两个项目放在第 1 行中彼此靠近的能力。这是代码。
from tkinter import *
import datetime
from tkinter import ttk
import tkinter as tk
from tkinter.scrolledtext import ScrolledText
root = Tk()
root.title("To - Do List")
root.geometry("1200x600")
root.configure(background = "white")
# Variable list:
content = ttk.Frame(root)
content.grid(column=0, row=0, sticky=(N, S, E, W))
Photo1= PhotoImage(file="Full Circle Image Icon Docs.png")
Photo2 = PhotoImage(file="To - Do List Label.png")
TasksList = ttk.Notebook()
Task1 = ttk.Frame(TasksList)
Task2 = ttk.Frame(TasksList)
TasksList.add(Task1, text = 'One')
TasksList.add(Task2, text = 'Two')
TasksList.grid(row=2, column=0, sticky=W)
root.columnconfigure(0, weight=0)
root.rowconfigure(0, weight=0)
Label(image=Photo1, bg="black", borderwidth=0, highlightthickness=0).grid(row=0, column=0, sticky=W)
Label(image=Photo2, borderwidth=0, highlightthickness=0).grid(row=0, column=1, sticky=W)
root.mainloop()
将不胜感激。非常感谢你们!
将网格设为三列宽,然后将列权重设置为第三列以使其随 window 展开。然后将标签放在第一列和第二列中。
然后让 TasksList 用以下内容填充所有三列:columnspan=3
。
另外,我将 TasksList 放在第二行,并让它的权重 =1 以使用 window 进行扩展。看这个例子:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("500x600+800+50")
# Set which cols and rows should expand with window
root.columnconfigure(2, weight=1)
root.rowconfigure(1, weight=1)
TasksList = ttk.Notebook(root)
Task1 = ttk.Frame(TasksList)
Task2 = ttk.Frame(TasksList)
TasksList.add(Task1, text = 'One One One One One One')
TasksList.add(Task2, text = 'Two Two Two Two Two Two')
TasksList.grid(row=1, column=0, sticky=N+W, columnspan=3)
# Make the TaskList span all three columns ------^
Photo1= PhotoImage(file="test.gif")
Photo2 = PhotoImage(file="test.gif")
# Put labels in root
Label(root, image=Photo1, bd=0).grid(row=0, column=0, sticky=W)
Label(root, image=Photo2, bd=0).grid(row=0, column=1, sticky=W)
# Don't put anything in column=2
root.mainloop()
在 row=0 中,第三列(空)将扩展以填充 window。在 row=1 中,TasksList 将扩展以填充 window。有关详细信息,请参阅 The Tkinter Grid Geometry Manager。