Tkinter按钮默认无限大

时间:2019-04-26 21:57:01

标签: python user-interface tkinter

我试图用两个按钮和一些标签(可能是4个左右)来设置基本的GUI。

我的印象是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()

例如,当我运行这段代码时,“运行”按钮的文本位于正确的位置,但是实际的按钮占用了 entire 窗口。最后一个运行的按钮都会使窗口中的所有其他内容黯然失色。

我试图通过config()来调整按钮的大小,只是通过在其自己的参数(例如run = Button(root, text="Run", height=100, width=100))中更改大小。

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

对于将要说“使用grid而不是place()”的人们-我不知道grid()会更好。似乎不那么直观,也没有那么有效,特别是对于依赖于屏幕分辨率的应用程序窗口大小(这是我的代码的一部分)。实际上,grid()的整个格式比仅使用相对于窗口的浮标度量要弱得多(即,如何使用place来完成)。我来自操作系统背景,这是标准做法,并且嘲笑使用像素等的人。不过,该脚本似乎已在Tkinter的StackOverflow上翻转了。随时改变主意。

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

1 个答案:

答案 0 :(得分:2)

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

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

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