【问题标题】:Empty Space Caused by Entry Widget in TkinterTkinter 中的条目小部件导致的空白空间
【发布时间】:2020-10-28 03:26:56
【问题描述】:

程序运行时,我在程序中使用的复选框在复选框 2 和 3 之间有很大的差距。

我发现这是由我的条目小部件引起的,因为当我将其注释掉时,复选框 2 和 3 之间的间隙消失了。我不确定如何消除这种无形的差距,因为复选框和条目小部件位于不同的行中,因此,它让我相信这两个小部件之间不应该有干扰。

from tkinter import *
import tkinter as tk

master = tk.Tk()

tk.Label(master, text="First Name").grid(row=0)
Entry(master).grid(row=0, column=1)

var1 = IntVar()
var2 = IntVar()
var3 = IntVar()

Checkbutton(master, text="1", variable=var1).grid(row=2,column=0, sticky=W)
Checkbutton(master, text="2", variable=var2).grid(row=2, column=1, sticky=W)
Checkbutton(master, text="3", variable=var3).grid(row=2, column=2, sticky=W)

Button(master,text="QUIT",command=master.quit, fg="red").grid(row=3,column=1)

master.mainloop()

【问题讨论】:

  • 是的,设置整列宽度的总是最宽的小部件。一个简单的解决方法是通过添加参数columnspan=3 使条目跨度为 2 或 3 列。您可能希望对 Button 执行相同的操作。
  • 我更喜欢将这些复选按钮放在一个框架中,以便它们可以独立布局。

标签: python python-3.x tkinter tkinter-entry


【解决方案1】:

您可以将按钮放置在横跨应用宽度的框架中。条目可以调整为也跨多个列。

可能是这样的:

import tkinter as tk

master = tk.Tk()

tk.Label(master, text="First Name").grid(row=0)
tk.Entry(master).grid(row=0, column=1, columnspan=2)

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()


checkbtns = tk.Frame(master)
tk.Checkbutton(checkbtns, text="1", variable=var1, padx=10).pack(side=tk.LEFT, anchor=tk.W)
tk.Checkbutton(checkbtns, text="2", variable=var2, padx=10).pack(side=tk.LEFT, anchor=tk.W)
tk.Checkbutton(checkbtns, text="3", variable=var3, padx=10).pack(side=tk.LEFT, anchor=tk.W)
checkbtns.grid(row=2, column=0, columnspan=3)

tk.Button(master, text="QUIT", command=master.destroy, fg="red").grid(row=3, column=0, columnspan=3)

master.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2021-02-22
    相关资源
    最近更新 更多