3

我刚刚学会了如何在 Python (3.2.2) 中使用 tkinter,我在使用网格管理器时遇到了一些问题。例如,当我放置 button.grid(sticky=SE) 时,按钮并没有放在右下角,而只是放在左上角,忽略了粘性值。我在这里做错了什么?我试图搜索它,但我无法真正找出我做错了什么。

4

2 回答 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 回答