我试图用两个按钮和一些标签(可能是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上翻转了。随时改变主意。
我的问题是,如何在仍能有效放置按钮的同时保持按钮的默认大小(封装文本)?
答案 0 :(得分:2)
使用place并指定relwith
和/或relheight
时,您要求按钮的宽度或高度相对于其父代。。在这种情况下,父级是根窗口。
因此,如果将relheight
设置为1
,则要求按钮的高度与整个窗口一样高。同样,当您将relwidth
设置为.25时,您要求它的宽度是整个窗口的1/4。
您只需删除relwidth
和relheight
属性,即可轻松看到这一点,按钮将是其自然大小。