我刚刚学会了如何在 Python (3.2.2) 中使用 tkinter,我在使用网格管理器时遇到了一些问题。例如,当我放置 button.grid(sticky=SE) 时,按钮并没有放在右下角,而只是放在左上角,忽略了粘性值。我在这里做错了什么?我试图搜索它,但我无法真正找出我做错了什么。
问问题
8541 次
2 回答
4
您可能需要为包含按钮的小部件设置最小尺寸。如果不这样做,容器小部件可能会缩小到仅占用显示按钮所需的空间。如果是这样,粘性选项将毫无意义,因为容器小部件没有空间来显示任何差异。
例如,使用 atk.Frame
作为容器小部件:
import Tkinter as tk
class SimpleApp(object):
def __init__(self, master, **kwargs):
title = kwargs.pop('title')
frame = tk.Frame(master, borderwidth=5, bg = 'cyan', **kwargs)
frame.grid()
button = tk.Button(frame, text = title)
button.grid(sticky = tk.SE)
frame.rowconfigure('all', minsize = 200)
frame.columnconfigure('all', minsize = 200)
def basic():
root = tk.Tk()
app = SimpleApp(root, title = 'Hello, world')
root.mainloop()
basic()
产量
PS。我没有在 Python3.2 中安装 tkinter,所以我无法测试它,但我认为你需要做的唯一改变是让它与 Python3.2 一起工作
import tkinter as tk
代替
import Tkinter as tk
于 2011-12-26T14:34:48.540 回答
1
当您说“我在这里做错了什么”时,您需要发布您的代码,否则任何人都能够猜出问题所在。
以下工作正常,将按钮放置在网格单元的右下角 (SE) - 默认为中心,而不是左上角 (NW)。
from tkinter import Button, Label, Entry, Tk, SE
root = Tk()
Label(text="Lots o' Stuff", width=30, height=15,
borderwidth=2, relief="raised").grid(rowspan=2)
Entry().grid(row=0, column=2)
Button(text="Hit Me").grid(row=1, column=2, sticky=SE)
root.mainloop()
于 2011-12-26T14:52:53.657 回答