我在 GUI 中有一个 Tkinter ttk.Scale
。我想要做的是在顶部或底部(或侧面,如果它是垂直的)添加一些标签,以显示用户正在选择的值。我有一个最低限度的工作示例,如下所示。
我的问题是我不知道如何让比例尺与标签对齐。它设置为跨越标签的所有列,但 Scale 小部件带有一个 length 关键字,自动强制其大小为 100 像素。我无法先验地知道将该长度设置为多少,也无法弄清楚如何告诉它填充其网格空间。
有没有办法告诉 Scale 选择一个长度来填充它的网格空间?
import tkinter as tk
from tkinter import ttk
def show_values():
print (w1.get())
def scaleFunc(val):
scaleVal = float(w1.get())
if int(scaleVal) != scaleVal:
w1.set(round(float(val)))
root = tk.Tk()
for i,text in enumerate(['O','B','A','F','G','K','M','L']):
ttk.Label(root, text = text).grid(row=0,column=i,padx=10)
w1 = ttk.Scale(root, to=7, command=scaleFunc, length=None)
w1.grid(row = 1, column = 0, columnspan = 8,ipadx=0)
ttk.Button(root, text='Show', command=show_values).grid(row=2,column=0,columnspan=8)
root.mainloop()
最佳答案
我想我应该多玩一些。看起来 Scale 小部件监听网格管理器中的 sticky
关键字。
w1 = ttk.Scale(root, to=7, command=scaleFunc, length=None)
w1.grid(row=1,column=0,columnspan=8,padx=(10,7),sticky='NSEW')
关于python - 使 tkinter Scale 跨越它的完整网格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800042/