摆脱tkinter小部件周围的空白

时间:2017-11-14 20:19:04

标签: python tkinter

我将窗口小部件放在.grid的窗口上,并注意到窗口小部件周围有空格。我使用highlightthickness在canvas小部件上修复了这个问题,但这不适用于按钮小部件。当你有灰色的窗口背景并且按钮周围有空白区域时,它看起来并不酷。 附:我在macos Sierra上使用python3

root = Tk()
root.configure(bg='grey')

w = Canvas(root, width=150, height=150, highlightthickness=0)
w.grid(row=1, column=1, sticky="nsew")

clear_btn = Button(text="Clear", width=15, command=lambda: w.delete("all"))
clear_btn.grid(row=2, column=1)

root.mainloop()

P.S。 TKinter leaving borders around widgets这就是它的样子。这家伙被建议使用highlightbackground,但是当我截取小部件时,我仍然在小部件周围有空白区域。

2 个答案:

答案 0 :(得分:2)

要使按钮填充它占据的网格框的整个空间,请尝试将sticky函数的grid()参数设置为"NSEW"

from tkinter import *

root = Tk()
root.configure(bg = "grey")

w = Canvas(root, width = 150, height = 150, highlightthickness = 0)
w.grid(row = 1, column = 1, sticky = "NSEW")

clear_btn = Button(text = "Clear", width = 15, command = lambda: w.delete("all"))
clear_btn.grid(row = 2, column = 1, sticky  =  "NSEW")

root.mainloop()

<强>之前:

before

<强>后:

after

注意:这些窗口的外观在操作系统之间甚至可能在同一操作系统上的不同视觉主题之间略有不同。

答案 1 :(得分:0)

我没有OSX,所以我无法检查,但我认为如果你使用ttk和一个与默认风格不同的风格(比如'clam'),你可以配置像你想要的。

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.configure(bg='grey')

style = ttk.Style(root)
style.theme_use('clam')

w = tk.Canvas(root, width=150, height=150, highlightthickness=0)
w.grid(row=1, column=1, sticky="nsew")

clear_btn = ttk.Button(text="Clear", width=15, command=lambda: w.delete("all"))
clear_btn.grid(row=2, column=1)

root.mainloop()