如何为tkinter窗口添加边距

18 投票
4 回答
86986 浏览
提问于 2025-04-16 03:42

我现在有一个简单的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 个回答

3

你可以在根窗口 Tk() 对象里添加一个内框架(innerFrame),并设置一些边框宽度(borderwidth)或者内边距(ipadx, ipady)属性。然后把所有的东西放进去。为了确保内框架的宽度和高度和窗口一样,可以使用填充(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()    
16

使用pad选项(padx、pady、ipadx、ipady)来给文本小部件周围添加一些空白。比如说:

self.text.grid(row=0, column=1, padx=20, pady=20)

如果你想在整个界面周围添加空白,可以在打包应用框架的时候加上空白:

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

当你说标签命令不工作时,你是怎么定义“不工作”的?是出现错误吗?字体看起来很大但不粗,粗但不大,等等?我觉得这个命令看起来没问题,我运行的时候也能正常工作。

你的例子没有显示你实际上是把那个标签应用到一段文本上。你有这样做吗?如果有,是怎么做的?如果你这样做,结果会怎样?

self.text.insert("1.0", 'is this bold?', 'big')
31

好的,这里是我找到的第一个问题的解决办法:

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

去掉 .text 似乎会改变整个框架。我还是没解决第二个问题。

撰写回答