文本小部件填充屏幕的一半

时间:2015-02-15 19:12:57

标签: python tkinter widget

我有一个python tkinter程序,我有两个需要并排的文本小部件。我怎样才能让这两个小部件占据400 x 400像素窗口的正好一半?

我的代码在这里

import tkinter

class MyApp:
    def __init__(self):
        self.root = tkinter.Tk()
        self.root.title("App")
        self.root.geometry("400x400")
        self.root.update()
        self.box1Text = tkinter.Text(self.root)
        self.box1Text.pack(fill=tkinter.BOTH,side=tkinter.LEFT)
        self.box2Text = tkinter.Text(self.root)
        self.box2Text.pack(fill=tkinter.BOTH,side=tkinter.RIGHT)

App = MyApp()

2 个答案:

答案 0 :(得分:4)

默认情况下,文本小部件要宽80个字符,高24个字符。如果您没有指定大小,tkinter将尽力确保小部件的大小。如果它无法满足所请求大小的所有小部件,它将开始缩小小部件,从最后创建的小部件开始。这就是为什么第一个小部件占用窗口的所有(或大部分) - tkinter尝试显示它,然后将任何剩余空间给下一个小部件。在这种情况下,房间剩下零。

由于您为窗口提供了明确的大小,因此您可以为文本窗口小部件指定宽度和高度1(一),然后让几何管理器展开窗口小部件以填充额外的空间。您还需要告诉pack让窗口小部件展开。因此,将width=1, height=1添加到窗口小部件的定义中,然后在框架中打包窗口小部件时添加expand=True

这是一个有效的例子:

import tkinter

class MyApp:
    def __init__(self):
        self.root = tkinter.Tk()
        self.root.title("App")
        self.root.geometry("400x400")
        self.root.update()
        self.box1Text = tkinter.Text(self.root, width=1, height=1)
        self.box1Text.pack(fill=tkinter.BOTH,side=tkinter.LEFT, expand=True)
        self.box2Text = tkinter.Text(self.root, width=1, height=1)
        self.box2Text.pack(fill=tkinter.BOTH,side=tkinter.RIGHT, expand=True)

App = MyApp()
App.root.mainloop()

答案 1 :(得分:-1)

您需要为每个初始值设定项添加width=200, height=400,如下所示。

self.box1Text = tkinter.Text(self.root, height=400, width=200)
self.box2Text = tkinter.Text(self.root, height=400, width=200)