![](/img/trans.png)
[英]How to set the text/value/content of an `Entry` widget using a button in 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 小部件,则不能在具有相同主控的小部件上同时使用place
和grid
。 第一个将调整小部件的大小。 另一个将看到更改,并调整所有内容以适应它自己的约束。 第一个将看到这些更改并再次调整所有内容以适应其约束。 另一个会看到这些变化,以此类推。 他们将陷入争夺霸权的永恒斗争中。
place
和grid
不能同时使用。相反,您可以定义两个单独的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()
希望能帮助到你....
grid
和pack
是围绕您创建所需或最佳大小的小部件的想法而设计的。 然后,您定义它们的相对位置, grid
或pack
将为您调整所有内容,以使所有内容都适合。
对于绝大多数情况,这非常有效。 几十年来,我使用过许多 GUI 工具包,没有其他工具包能与pack
和grid
恕我直言的强大和简单性相提并论。
如果您希望条目小部件更宽,可以通过设置条目的width
属性来实现。
window_1 = Entry(app, textvariable=equation, width=20)
window_2 = Entry(app, width=20)
完成此操作后, grid
和pack
将尽最大努力分配足够的空间来容纳小部件。 这是他们相对于place
的优势:他们会进行计算以使一切都合适。 有了place
,完全由你来决定如何让事情变得合适。
然后,您可以使用grid
和pack
的各种选项进行细微调整,例如添加填充,如果可用空间量发生变化,让小部件增长或缩小等。
而不是使用.grid
来调整高度,只需使用 place。 正如@BryanOakley 所说,同时使用grid
和pack
并不是一个好习惯。
在适当的位置,有两个参数可以帮助您。 relheight
和relwdith
。 这些设置相对于父小部件大小的高度和宽度。
如果不想使用 place,可以使用grid_rowconfigure()
和grid_widthconfigure()
。 看到这个问题。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.