我一直在寻找不同的网站,试图找出tkinter的重量.我从TkDocs那里得到了这个:
每个列和行都有一个与它关联的"权重"网格选项,告诉它如果要填充的主空间中有额外的空间,它应该增长多少.默认情况下,每列或每行的权重为0,表示不扩展以填充空间.
有人可以把它放在我的某些背景下,因为我很难理解它的作用.我已经尝试了以下代码,它似乎只是在我更改值时在页面上移动东西.
try:
import tkinter
except ImportError: # python 2
import Tkinter as tkinter
import os
mainWindow = tkinter.Tk()
mainWindow.title("Grid demo")
mainWindow.geometry('640x480-8-200')
label = tkinter.Label(mainWindow, text="tkinter grid demo")
label.grid(row=0, column=0, columnspan=3)
mainWindow.columnconfigure(0, weight=1)
mainWindow.columnconfigure(1, weight=1)
mainWindow.columnconfigure(2, weight=3)
mainWindow.columnconfigure(3, weight=3)
mainWindow.columnconfigure(4, weight=3)
mainWindow.rowconfigure(0, weight=1)
mainWindow.rowconfigure(1, weight=10)
mainWindow.rowconfigure(2, weight=1)
mainWindow.rowconfigure(3, weight=3)
mainWindow.rowconfigure(4, weight=3)
fileList = tkinter.Listbox(mainWindow)
fileList.grid(row=1, column=0, sticky='nsew', rowspan=2)
fileList.config(border=2, relief='sunken')
for zone in os.listdir('/Windows/System32'):
fileList.insert(tkinter.END, zone)
mainWindow.mainloop()
Run Code Online (Sandbox Code Playgroud) 我想将条目小部件向右对齐,而与左侧标签的宽度无关。Id 标题的宽度应该不重要。无论标题的宽度是多少,条目小部件都应该对齐。
这是我的代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title('test')
root.geometry("500x800")
# main frame
main_frame = tk.Frame(root)
main_frame.pack(expand=1, fill='both')
# the message
title = tk.Label(main_frame, text="title 1", bg='white')
title.pack(padx=8, pady=8, fill='x')
foo1_frame = tk.Frame(main_frame)
foo1_frame.pack(padx=8, pady=8, fill='x')
foo1_label = tk.Label(foo1_frame, text="short title foo1")
foo1_label.grid(row=0, column=0)
foo1_entry_box = tk.Entry(foo1_frame, width=10)
foo1_entry_box.grid(row=0, column=2, sticky='e') #sticky does nothing in this case
foo2_frame = tk.Frame(main_frame)
foo2_frame.pack(padx=8, pady=8, fill='x')
foo2_label = tk.Label(foo2_frame, text="loooooooooooonger title foo2")
foo2_label.grid(row=1, column=0)
foo2_entry_box = tk.Entry(foo2_frame, …Run Code Online (Sandbox Code Playgroud)