如何为tkinter窗口添加边距

18

所以我目前有一个简单的 Python Tkinter 窗口,并在其中添加了文本、按钮等。

代码片段:

class Cfrm(Frame):

    def createWidgets(self):

        self.text = Text(self, width=50, height=10)
        self.text.insert('1.0', 'some text will be here')
        self.text.tag_configure('big', font=('Verdana', 24, 'bold'))


        self.text["state"] = "disabled"
        self.text.grid(row=0, column=1)

        self.quitw = Button(self)
        self.quitw["text"] = "exit",
        self.quitw["command"] = self.quit
        self.quitw.grid(row=1, column=1)


    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

我的问题是,我想在窗口周围留出大约15-20像素的边距,我已经到处查找,但没有找到解决方案。

self.text.tag_configure('big', font=('Verdana', 24, 'bold'))

不起作用。有什么可能的解决方案吗?

4个回答

30

好的,这是我找到的解决方案,针对问题1:

self.grid(padx=20, pady=20)

移除 .text 似乎改变了整个框架。我仍然没有解决问题2。


15

使用grid命令的pad选项(padx,pady,ipadx,ipady)在文本窗口周围添加填充。例如:

self.text.grid(row=0, column=1, padx=20, pady=20)
如果您想要整个GUI周围有填充,请在打包应用程序框架时添加填充:
self.pack(padx=20, pady=20)
当你说标签命令不起作用时,你如何定义“不起作用”?你是否遇到了错误?字体看起来很大但不加粗,加粗但不大等等?在我看来,这个命令是正确的,并且当我运行它时它也正常工作。
你的示例并未显示你实际上正在将该标记应用于一段文本范围。你这样做了吗?如果是这样,你是如何做的?如果你按照以下步骤操作,会发生什么?
self.text.insert("1.0", 'is this bold?', 'big')

当我执行:self.text.insert(1.0, 'is this bold?', 'big')时,绝对没有任何变化。文本出现了,但没有加粗。Padx、Pady确实起作用,唯一的问题是它为小部件添加了填充,而不是整个窗口,因此文本和按钮之间没有空间。是否可能做一些类似于相对于当前大小调整窗口大小的事情? - Jack S.
self.pack(padx...)非常有用! - qed

3

您可以在根Tk()对象上添加一个带有一些borderwidth或ipadx,ipady属性的innerFrame。然后将所有内容放在其中。为确保innerFrame的宽度和高度值与窗口的相同,请使用fill和expand属性。

root = tk.Tk()
innerFrame = tk.Frame(root, borderwidth=25, bg="red")
innerFrame.pack(fill="both", expand=True)

someButton = tk.Button(innerFrame, text="Button1")
someButton.pack()

或者

root = tk.Tk()
innerFrame = tk.Frame(root, bg="red")
innerFrame.pack(ipadx=15, ipady=15, fill="both", expand=True)

someButton = tk.Button(innerFrame, text="Button1")
someButton.pack()    

2
一种快速的方法是将您的“relief style”调整为平坦,然后您只需要调整边框宽度即可。
self.Border = Tkinter.Frame(self, relief='flat', borderwidth=4)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接