如何为tkinter窗口添加边距
我现在有一个简单的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
似乎会改变整个框架。我还是没解决第二个问题。