为什么网格不以窗口大小为中心?网格现在的最大行数和列数是多少? 另外,为什么按钮不是正方形,因为我将它们的高度和宽度定义为相等? 这是我的代码:
from Tkinter import *
class Application:
def __init__(self, master=None):
self.master = master
self.createWidgets_0()
def createWidgets_0(self):
self.but_Next = Button(self.master, text="Next", height = 10, width = 10)
self.but_Next.grid(row=1, column=2)
self.but_fil1 = Button(self.master, text="Filler", height = 10, width = 10)
self.but_fil1.grid(row=1, column=1)
self.but_fil2 = Button(self.master, text="Filler", height = 10, width = 10)
self.but_fil2.grid(row=0, column=1)
self.but_fil3 = Button(self.master, text="Filler", height = 10, width = 10)
self.but_fil3.grid(row=2, column=1)
self.but_Close = Button(self.master, text="Close", command=self.master.quit, height = 10, width = 10)
self.but_Close.grid(row=1, column=0)
root = Tk()
app = Application(root)
app.master.geometry("800x600")
app.master.resizable(0, 0)
root.mainloop()
root.destroy()
答案 0 :(得分:1)
如果窗口中有额外的空间,你还没告诉tkinter该怎么办。你可以通过给行或列一个 weight 来做到这一点,它告诉tkinter相对应该给该行或列多少额外空间。默认权重为零,这意味着不会给任何行或列提供超过其请求的空间。
根据经验,您应该始终给予至少一行和一列非零权重。通常这将是"英雄"行或列(通常是带有文本小部件,画布或其他大型小部件的行)。如果您希望所有窗口小部件都居中 - 有点像网页 - 想要行和列零,并且行和列至少比最后一行和列大一个。如果您希望所有行和列均匀扩展以填充窗口,请为每个具有窗口小部件的行和列赋予相同的权重。
要提供行或列权重,请使用grid_rowconfigure
和grid_columnconfigure
。第一个参数是行号或列号,或数字元组。例如,要将所有额外空间分配给行0和2,您可以这样做:
self.master.grid_rowconfigure((0,2), weight=1)
答案 1 :(得分:0)
如果您指定1x1图像的图像背景,则可以毫无问题地调整按钮的大小。
请记住,如果没有将图像设置为按钮,tkinter将根据文本大小解释高度。对于图像,它应该以像素为单位解释高度和宽度。
import tkinter as tk
root = tk.Tk()
tk.Frame(root)
my_image = tk.PhotoImage(file="path_to_image/1x1.gif")
tk.Button(text="Button with 1x1 image", image=my_image, compound="left", height=100).grid(row=0, column=0)
root.mainloop()