python - 文本小部件填充一半屏幕

标签 python tkinter widget

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

我的代码在这里

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()

最佳答案

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

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

关于python - 文本小部件填充一半屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530035/

相关文章:

python - tkinter 返回动态复选框的名称

android - 删除并重新添加后小部件点击不起作用

html - Iframe 未在水平滚动 Div 中完全加载

python - 为什么 Tkinter 在绘图时会删除之前的矩形?

javascript - 如何避免 JavaScript 小部件中的名称冲突

python - url 无法处理代码,但可以手动搜索

python - 尝试将数据传输到 arangodb 时数据变得困惑

python - Python 中的两个子图(matplotlib)

python - PyCharm 自动完成不适用于 pygame

python - 如何在 tkinter Entry 小部件中仅插入一些指定字符