python - 使 tkinter Scale 跨越它的完整网格单元格

标签 python user-interface tkinter

我在 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()

enter image description here

最佳答案

我想我应该多玩一些。看起来 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/

相关文章:

python - 如何使 python tkinter 匹配按钮到操作系统

javascript - 如何提交新 Google 帐户请求?

Python:如何根据键值对字典进行切片?

c++ - FillRect 在某些情况下不起作用

c# - 使表单适合各种尺寸的屏幕

python - 处理 Tkinter 文本小部件索引系统。

python - 在不知道类名的情况下检查单独文件中类中的变量?

python - 在没有任何内置 e​​val 函数或外部库的情况下用 python 解决数学问题

python - Pandas 按坐标合并

c# - 将控件添加到 FlowLayoutPanel 时意外的索引更改