希望你們都做得很好。
我正在嘗試撰寫一個代碼,通過在 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。
這是錯誤訊息: 錯誤訊息
感謝您的嘗試和幫助!
uj5u.com熱心網友回復:
要將值分配給變數,您可以簡單地使用全域變數和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,它們大部分時間代表同名字串只是小寫,因此我建議使用它們,因為您不需要額外匯入任何內容。
為什么不使用*?好吧,您匯入了所有內容,但您可能不知道或忘記了您匯入的所有名稱,這可能會導致問題,您從兩個模塊匯入相同的內容,但最后一個匯入會覆寫第一個,因此您要使用的名稱可能不會參考你認為它參考的物件。換句話說,它有助于保持命名空間干凈。
(附加資訊:您應該匯入您需要的內容,例如from module import Class1, func_1, var_2等等或匯入整個模塊:import module然后您也可以使用別名:import module as md或類似的東西)
另外:
我強烈建議遵循PEP 8 - Python 代碼風格指南。函式名和變數名應該在snake_case,類名應該在CapitalCase. 沒有足夠的空間周圍=,如果它被用作關鍵字引數的一部分,( func(arg='value')),但周圍有空間,=如果是用于分配的值(variable = 'some value')。在運算子周圍留出空間( -/等value = x y:(此處除外value = x y))。在函式和類宣告周圍有兩個空行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/312909.html
上一篇:如何在UI中顯示預測串列(來自我的后端代碼,當用戶條目中出現“Text_Changed”時?XamarinForms
