繁体   English   中英

如何使用网格重新调整 Tkinter 文本输入小部件的大小?

[英]How to re-size Tkinter text entry widget using Grid?

我一直在寻找解决方案,但找不到适合我的解决方案。 我正在尝试使用 Grid 更改条目小部件的大小,以下是我当前的代码:

if __name__ == '__main__':
    # create application window
    app = Tk()

    # title
    app.title("Music Players")

    # geometry
    app.geometry('500x300')

    # background color
    app.configure(bg='orange')

    equation = StringVar()
    window_1 = Entry(app, textvariable=equation)
    window_1.grid(columnspan=5, ipadx=100, ipady=10)
    equation.set('Music Player')

    window_2 = Entry(app)
    window_2.grid(columnspan=5, ipadx=100, ipady=10)
    window_2.place(x=0, y=50, width=340, height=500)

我正在使用place来调整 window_2 条目的大小,但很难很好地调整它,不知何故,使用place的数字与网格设置中的数字不匹配。 如何使用网格而不是位置有效地更改条目大小?

先感谢您!

您好,我运行了给定的代码,以下是 output

图片在这里

使用Label作 HEADING

首先,如果您打算制作“音乐播放器”,那么您应该使用Label的 Label 小部件作为应用程序的 HEADING,而不是使用Entry小部件。 Label小部件的内容不能由用户编辑,其大小和字体也可以轻松定义。

您正在处理的应用程序可能需要一个列表框而不是一个条目小部件

如果您想要在您的程序中使用 Entry 小部件,则不能在具有相同主控的小部件上同时使用placegrid 第一个将调整小部件的大小。 另一个将看到更改,并调整所有内容以适应它自己的约束。 第一个将看到这些更改并再次调整所有内容以适应其约束。 另一个会看到这些变化,以此类推。 他们将陷入争夺霸权的永恒斗争中。

placegrid不能同时使用。相反,您可以定义两个单独的frames ,一个用于标题,一个用于主条目,在一个中使用grid ,另一个很容易place

我个人会推荐你使用.place()
要设置条目小部件的宽度,您应该使用relwidth = 0>x>1
要设置入口高度的宽度,您应该使用relheight = 0>x>1
在屏幕的顶部 x 轴上留出一些空间,使用relx = 0>x>1
在屏幕的 y 轴左侧留出一些空间,使用rely = 0>x>1
它非常简单,您一定可以依赖它

我使用.place()重写了您的代码

from tkinter import *

if __name__ == '__main__':
    # create application window
    app = Tk()

    # title
    app.title("Music Players")

    # geometry
    app.geometry('500x300')

    # background color
    app.configure(bg='orange')

    equation = StringVar()
    window_1 = Label(app, textvariable=equation)
    window_1.place(relwidth=0.8, relheight=0.1, relx=0.1, rely=0.05)
    equation.set('Music Player')

    window_2 = Entry(app)
    window_2.place(relwidth=0.9, relheight=0.7, relx=0.05, rely=0.2)


app.mainloop()

这是 OUTPUT: 图像-2

希望能帮助到你....

gridpack是围绕您创建所需或最佳大小的小部件的想法而设计的。 然后,您定义它们的相对位置, gridpack将为您调整所有内容,以使所有内容都适合。

对于绝大多数情况,这非常有效。 几十年来,我使用过许多 GUI 工具包,没有其他工具包能与packgrid恕我直言的强大和简单性相提并论。

如果您希望条目小部件更宽,可以通过设置条目的width属性来实现。

window_1 = Entry(app, textvariable=equation, width=20)
window_2 = Entry(app, width=20)

完成此操作后, gridpack将尽最大努力分配足够的空间来容纳小部件。 这是他们相对于place的优势:他们会进行计算以使一切都合适。 有了place ,完全由你来决定如何让事情变得合适。

然后,您可以使用gridpack的各种选项进行细微调整,例如添加填充,如果可用空间量发生变化,让小部件增长或缩小等。

而不是使用.grid来调整高度,只需使用 place。 正如@BryanOakley 所说,同时使用gridpack并不是一个好习惯。

在适当的位置,有两个参数可以帮助您。 relheightrelwdith 这些设置相对于父小部件大小的高度和宽度。

如果不想使用 place,可以使用grid_rowconfigure()grid_widthconfigure() 看到这个问题

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM