从 GUI 滑块获取可变浮点值

Get a variable float value from GUI slider

希望你们一切都好。

我正在尝试编写代码,在其中使用 GUI 中的滑块输入变量值。我可以让滑块工作并生成所需的值,但我无法将生成的值分配给变量。我确信这是一个我不理解的简单错误,可能与秤生成的价值类型有关,但我无法修复它。

这是我尝试执行的代码。

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

def Compute():
    return scaleThetaB.get()

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

ThetaB=Compute()
print(ThetaB)

这是 GUI 的图片: GUI

在这种特定情况下,我想将滑块的值 (79.1) 分配给我的变量 ThetaB。

这是错误信息: Error Message

感谢您的尝试和帮助!

要将值分配给变量,您可以简单地使用全局变量和 global:

from tkinter import Tk, Scale, Button

theta_b = 0


def compute():
    global theta_b
    theta_b = scale_theta_b.get()


window = Tk()

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

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

window.mainloop()

您不需要使用 HORIZONTAL 等全局常量,它们大多数时候代表相同的名称字符串,只是小写,所以我建议使用它们,因为您不需要导入任何额外的。

为什么不使用 *?好吧,你导入了所有东西,但你可能不知道或忘记了你导入的所有名称,这可能会导致一个问题,即你从两个模块导入相同的东西,但最后一个导入覆盖第一个,所以你想使用的名称可能不会引用您认为它引用的对象。换句话说,它有助于保持名字space 干净。
(附加信息:您应该导入您需要的内容,例如 from module import Class1, func_1, var_2 等等,或者导入整个模块:import module 然后您也可以使用别名:import module as md 或类似的东西)

还有:
我强烈建议关注 PEP 8 - Style Guide for Python Code。函数和变量名称应在 snake_case 中,class 中的名称应在 CapitalCase 中。如果它用作关键字参数 (func(arg='value')) 的一部分,则 = 周围不要有 space,但如果它用于 =,则周围有 space赋值 (variable = 'some value')。在运算符周围有 space(+-/ 等:value = x + y(此处除外 value += x + y))。在函数和 class 声明周围有两个空行。