Tkinter按钮调整大小

3

我从这里找到了如何调整按钮大小的方法,于是我尝试执行了以下代码。

from tkinter import * 
selection_window = Tk()
selection_window.wm_title("")
selection_window.geometry('{}x{}'.format(200, 150))
frame_1 = Frame(selection_window, width=200, height=30)
Button(frame_1, text="Single",height = 100).pack(side=LEFT,anchor=S)
Button(frame_1,text="Range",command=Toplevel,height = 20).pack(side=RIGHT,anchor=S)
frame_1.pack()
selection_window.mainloop()

但按钮的大小并没有改变,相反,按钮移到了窗口中心。有人能告诉我这是什么问题吗? screenshot

顺便说一句:简化的 .geometry("200x150") - undefined
3
这是一个与操作系统相关的问题,我正在使用Linux,但你的按钮在我的系统中高度不同。我猜测tk默认主题不支持“height”关键字在OSX上的使用。 - undefined
2
@j_4321 是正确的:OSX 主题对其按钮非常严格。 - undefined
1个回答

3

按钮高度: 如果你注意到,frame_1的高度是30,而按钮的高度分别为100和20。一个按钮的高度比frame_1显著更高。因此,如果你最大化你的tk窗口,你会看到按钮之间的高度差异。或者,尝试将一个按钮的高度设置为10,另一个按钮的高度设置为2,然后重新运行你的脚本,以查看高度差异。结论,按钮的高度可以改变。

按钮横向放置: 按钮的横向放置可以通过使用pack系统的padx=[x_left, x_right]选项来控制。x_leftx_right表示与其父级相关的每个按钮左侧和右侧要留下的水平外部填充。您可以阅读Tk文档以获取有关Packer算法的更清晰的解释。

from tkinter import * 
selection_window = Tk()
selection_window.wm_title("")
selection_window.geometry('{}x{}'.format(200, 150))
frame_1 = Frame(selection_window, width=200, height=30)
frame_1.pack()
Button(frame_1, text="Single",height = 10).pack(side=LEFT, anchor=S, padx=[0,40])
Button(frame_1,text="Range",command=Toplevel,height = 2).pack(side=RIGHT, anchor=S, padx=[20,0])
selection_window.mainloop()
高度: 高度 位置:位置 第二部分: 根据下面的评论,请运行以下脚本,查看在使用“非默认”样式主题时是否可以更改ttk.Button的高度并在评论区发布您的发现。 在我的Ubuntu上可以工作。
from tkinter import *
import tkinter.ttk as ttk
s=ttk.Style()
print('Style themes on my system are ', s.theme_names())
s.theme_use('clam')
s.configure('bb.TButton', background='white', padding=50)
b1=ttk.Button(text='Default')
b1.pack(side=LEFT, anchor=S, padx=[0,40])
b2=ttk.Button(text='Custom', style='bb.TButton')
b2.pack(side=RIGHT, anchor=S, padx=[20,0])

填充=1填充=1 填充=40填充=40


谢谢!我觉得@j_4321回答了这个问题。我尝试改变高度和宽度的值(甚至使用循环在范围(20)内设置高度),但是没有任何变化。 - undefined
@pkqxdd 感谢你告诉我在OSX中,Pack中的高度和宽度选项没有任何效果。我学到了新的东西。请问padx选项是否对按钮的横向位置产生了任何变化?上述描述的行为是我在Ubuntu 16.04系统上观察到的。 - undefined
@pkqxdd 你的问题出在一个 tk.Button 上。根据 j_4321 的说法,问题是由于 tk 默认主题引起的。在这种情况下,你可以尝试使用其他主题来解决问题。要进行此检查,你需要使用带有不同自定义主题的 ttk.Button。请参考 http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-themes.html 的第47和48节。我已经查找了是否可以更改 ttk.Button 的样式,但未找到更改高度的选项,所以只能如此了。 - undefined
@Sun Bear ttk.Button不支持height选项(请参见http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Button.html),所以你需要找到另一种解决方法(请参见https://dev59.com/Kmkw5IYBdhLWcg3wZJp9)。 - undefined
@j_4321 谢谢你指出来。我本以为它已经存在了。根据Bryan的说法,在OSX上改变按钮高度真的是个大忌。有点遗憾!但我很好奇这个限制是否仅适用于“默认”样式主题,正如你之前的评论所提到的。我写了一个简短的脚本,并将其发布在我的答案中。它通过改变填充来改变ttk.Button的高度。pkqxdd 你能否在你的OSX系统上尝试一下,看看使用其他主题样式是否可以改变ttk.Button的高度? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接