Python Tkinter按钮默认为无限大

Python Tkinter按钮默认为无限大,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在尝试建立一个基本的GUI,它有两个按钮和一些标签(可能是4个左右) 我的印象是Tkinter按钮的默认大小与按钮中包含的文本量有关。然而,当我的按钮出现在屏幕上时,它们似乎占据了尽可能多的屏幕,这取决于我放置它们的位置。这是我的密码: from tkinter import * root = Tk() screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() screen_wid

我正在尝试建立一个基本的GUI,它有两个按钮和一些标签(可能是4个左右)

我的印象是Tkinter按钮的默认大小与按钮中包含的文本量有关。然而,当我的按钮出现在屏幕上时,它们似乎占据了尽可能多的屏幕,这取决于我放置它们的位置。这是我的密码:

from tkinter import *

root = Tk()

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

screen_width2 = screen_width/1.3
screen_height2 = screen_height/1.3

a = str(int(screen_width2)) + "x" + str(int(screen_height2))

root.geometry (a)

root.title("Tester")

welcomeUser = Label(root, text ="Welcome User")
upload = Button(root, text="Upload")
run = Button(root, text="Run")

welcomeUser.place(bordermode=INSIDE, relheight= 0.25, relwidth= 1.0)
upload.place(bordermode=INSIDE, relheight= 1.0, relwidth= 0.25)
run.place(bordermode=INSIDE, relheight= 1.0, relwidth= 1.75)

root.mainloop()
例如,当我运行此代码时,“run”按钮的文本位于正确的位置,但实际的按钮占据了整个窗口。无论最后运行哪个按钮,都会使窗口中的所有其他按钮黯然失色

我试图用
config()
调整按钮的大小,只需在自己的参数范围内更改大小,如
run=button(root,text=“run”,height=100,width=100)

我知道这与我使用
place()
有关,因为当我使用
pack()
grid()
时,按钮大小是默认的(文本大小)

对于那些打算说“使用
grid
而不是
place()
”的人,我不知道
grid()
如何更好。它似乎不那么直观,也不那么有效,尤其是对于依赖于屏幕分辨率的应用程序窗口大小(这是我代码的一部分)。事实上,
grid()
的整个格式比仅使用相对于窗口的浮动度量要弱得多(即如何使用place)。我来自一个操作系统的背景,在那里这是标准的做法,使用像素等的人受到嘲笑。不过,Tkinter似乎在StackOverflow上翻转了脚本。请随意改变我的想法


我的问题是,如何保持按钮的默认大小(封装文本),同时仍然能够有效地放置它们?

当您使用place并指定
relwith
和/或
relheight
时,您要求按钮的宽度或高度相对于其父按钮。在这种情况下,父窗口是根窗口

因此,如果将
relheight
设置为
1
,则要求按钮与整个窗口一样高。同样,当您将
relwidth
设置为.25时,您要求它的宽度为整个窗口的1/4


您只需删除
relwidth
relheight
属性即可轻松看到这一点,按钮将是其自然大小。

当您使用place并指定
relwith
和/或
relheight
时,您要求按钮的宽度或高度相对于其父按钮。在这种情况下,父窗口是根窗口

因此,如果将
relheight
设置为
1
,则要求按钮与整个窗口一样高。同样,当您将
relwidth
设置为.25时,您要求它的宽度为整个窗口的1/4


您只需删除
relwidth
relheight
属性,就可以很容易地看到这一点,按钮将是它们的自然大小。

您在使用
place
@BryanOakley时专门设置了大小。我不太清楚您的意思。我想,我设置的参数与小部件的实际位置有关。你是说我实际上是在设置小部件的大小,而它似乎只是因为按钮变大或变小而改变位置?你是在使用
place
@BryanOakley时专门设置大小的,我不太清楚你的意思。我想,我设置的参数与小部件的实际位置有关。你是说我实际上是在设置小部件的大小,而它似乎只是因为按钮变大或变小而改变位置?似乎我打算使用的是relx和relyIt似乎我打算使用的是relx和rely