Python Tkinter-Spinbox看起来比预期的长
运行从macOS Mojave上的python.org下载的Python3.7 我使用以下代码来排列Python Tkinter-Spinbox看起来比预期的长,python,python-3.x,macos,tkinter,Python,Python 3.x,Macos,Tkinter,运行从macOS Mojave上的python.org下载的Python3.7 我使用以下代码来排列Spinbox和Scale来控制同一变量。但是,外观并不是我所期望的: import tkinter as tk root = tk.Tk() mainframe = tk.Frame(root) # Model input = tk.DoubleVar(value=0.) # input = tk.IntVar(value=0) spin = tk.Spinbox(mainframe, t
Spinbox
和Scale
来控制同一变量。但是,外观并不是我所期望的:
import tkinter as tk
root = tk.Tk()
mainframe = tk.Frame(root)
# Model
input = tk.DoubleVar(value=0.)
# input = tk.IntVar(value=0)
spin = tk.Spinbox(mainframe, textvariable=input, wrap=True)
slide = tk.Scale(mainframe, variable=input, orient='horizontal')
spin['to'] = 1.0
spin['from'] = 0.0
spin['increment'] = 0.01
slide['to'] = 1.0
slide['from'] = 0.0
# spin['to'] = 100
# spin['from'] = 0
# spin['increment'] = 1
# slide['to'] = 100
# slide['from'] = 0
# Layout
weights = {'spin': 1, 'slide': 1000}
mainframe.grid_rowconfigure(0, weight=1)
mainframe.grid_columnconfigure(0, weight=weights['spin'])
mainframe.grid_columnconfigure(1, weight=weights['slide'])
spin.grid(row=0, column=0, sticky='news')
slide.grid(row=0, column=1, sticky='news')
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
mainframe.grid(row=0, column=0)
root.mainloop()
我预计比例
会比旋转框
占用更多的空间,但结果恰恰相反
我曾认为可能是因为我使用了DoubleVar
,由于十进制问题,字符串可能变长,但是IntVar
给出了相同的结果。请参阅注释掉的代码块
怎么了?在这种情况下,我应该如何获得一个短的
Spinbox
和一个长的Scale
?这是macOS特有的吗?操作系统在小部件上施加了一些最小尺寸 您可以设置Spinbox的宽度。例如:
spin = tk.Spinbox(mainframe, textvariable=input, wrap=True, width=5)
您可以设置Spinbox的宽度。例如:
spin = tk.Spinbox(mainframe, textvariable=input, wrap=True, width=5)
一些tkinter小部件的某些属性具有默认值
除非另有规定,否则旋转框的默认宽度为20
(以字符单位)
除非另有规定,否则比例的默认长度为100
(以像素为单位)
这就是为什么Spinbox
如此之大而比例相对较小的原因
要解决此问题,您可以自己指定它们,如下所示:
spin = tk.Spinbox(mainframe, textvariable=input, wrap=True, width=1)
slide = tk.Scale(mainframe, variable=input, orient='horizontal', length=200)
spin=tk.Spinbox(大型机,textvariable=input,wrap=True,width=1)
slide=tk.Scale(大型机,变量=输入,方向=水平,长度=200)
一些tkinter小部件的某些属性具有默认值
除非另有规定,否则旋转框的默认宽度为20
(以字符单位)
除非另有规定,否则比例的默认长度为100
(以像素为单位)
这就是为什么Spinbox
如此之大而比例相对较小的原因
要解决此问题,您可以自己指定它们,如下所示:
spin = tk.Spinbox(mainframe, textvariable=input, wrap=True, width=1)
slide = tk.Scale(mainframe, variable=input, orient='horizontal', length=200)
spin=tk.Spinbox(大型机,textvariable=input,wrap=True,width=1)
slide=tk.Scale(大型机,变量=输入,方向=水平,长度=200)
您是否尝试过显式地给spinbox一个宽度?您是否尝试过显式地给spinbox一个宽度?好的,我有一个错误的想法,网格系统将只考虑使用权重调整小部件的大小,而小部件在这方面是完全被动的,但现在我知道它们可以主动调整自己的大小。谢谢好吧,我有一个错误的想法,网格系统将只考虑小部件的权重调整,小部件在这方面是完全被动的,但现在我知道它们可以主动调整自己的大小。谢谢