You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Tkinter GUI滑动条获取浮点数值并赋值给变量

问题原因

你的代码报错核心有两个问题:

  1. Tkinter的window.mainloop()是阻塞式事件循环,只有GUI窗口被关闭后,这行代码之后的逻辑才会执行,此时窗口内的所有组件包括滑动条scaleThetaB已经被销毁,再调用scaleThetaB.get()自然无法正常取值。
  2. 绑定给按钮的Compute()函数的返回值无法直接被外层主逻辑接收,按钮点击触发的函数返回值不会自动传递。
    另外你原代码里字体参数也有写法错误:font=('Arial,20')应该改为font=('Arial',20),逗号位置错误会导致字体配置不生效。

修复方案

我们可以在点击按钮时就把滑动条的取值存入全局变量,不需要等窗口销毁后再去访问组件取值,修改后的代码如下:

import math
import sympy
import scipy
from sympy import *
from scipy import optimize
from tkinter import *

# 初始化全局变量存储滑动条取值
ThetaB = 0.0

def Compute():
    global ThetaB
    # 点击按钮时直接把滑动条值存入全局变量
    ThetaB = scaleThetaB.get()
    # 如果需要点击按钮后自动关闭窗口,取消下行注释即可
    # window.destroy()

window = Tk()
window.title("Variable Selection")
window.geometry('400x300')
window['bg'] = '#D99D08'

scaleThetaB = Scale(window,from_=0, to=150,length=1000,orient=HORIZONTAL,font=('Arial',20),tickinterval=10,showvalue=1,resolution=0.1,troughcolor='#990101')
scaleThetaB.pack()
button=Button(window,text='Compute',command=Compute)
button.pack()

window.mainloop()

# 窗口关闭后直接使用已经存储好的变量即可
print(ThetaB)

逻辑说明

调整滑动条到目标值后点击Compute按钮,数值就会同步到ThetaB变量中,你可以选择手动关闭窗口,或者添加window.destroy()实现点击按钮自动关闭窗口,窗口关闭后直接使用ThetaB变量即可拿到滑动条的取值。

内容的提问来源于stack exchange,提问作者TheGoodTheBadTheUgly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:54:03