0
我無法從另一個函數內的函數調用變量。功能不按預期工作,蟒蛇,TKinter
我有兩個功能:
def refineRate(event):
if refineRate(event) == int():
refine = int(refineRate(event))
return refine
else:
refine = float(refineRate(event))
return refine
和:
def veldCalc(event):
minValue = open("mineral_value.csv", "r")
veld = minValue.readlines()[0]
minValue.close()
veld = veld[0:3]
veld = int(veld)
veld = veld/100 * refineRate(event)
refinedVeld = veld * int(veldCalc)
print (refinedVeld)
我也有兩個條目,其中計算器的用戶可以輸入一些數字。
repro = Label(root, text="Reprocessing %")
repro_entry = Entry(root)
repro.grid(row=0, column=0)
repro_entry.grid(row=0, column=1)
veld = Label(root, text="Veldspar: ")
veld_entry = Entry(root)
veld.grid(row=1, column=0)
veld_entry.grid(row=1, column=1)
repro_entry.bind("<KeyPress>", refineRate)
veld_entry.bind("<KeyPress>", veldCalc)
我需要的是爲用戶的輸入有refineRate
,哪些應該再打通函數傳遞和存儲供以後使用。在當他們進入他們擁有量,veldCalc
功能,那麼應該拉動用戶從以前的功能改進率和做數學題,但即時得到以下錯誤
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Ganjena\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:/Users/Ganjena/Desktop/Course/Projects/helloworld/ORE FUNCTIONS/Ore Calculator.py", line 5, in refineRate
if refineRate(event) == int():
File "C:/Users/Ganjena/Desktop/Course/Projects/helloworld/ORE FUNCTIONS/Ore Calculator.py", line 5, in refineRate
if refineRate(event) == int():
File "C:/Users/Ganjena/Desktop/Course/Projects/helloworld/ORE FUNCTIONS/Ore Calculator.py", line 5, in refineRate
if refineRate(event) == int():
[Previous line repeated 990 more times]
RecursionError: maximum recursion depth exceede
任何想法,這是爲什麼不工作?先謝謝你。
在你的第一個功能將永遠不會停止遞歸,你總是有你'if'條件的遞歸調用... –
確定我想我明白了,我怎麼能停止?但它不是一個循環,爲什麼它會繼續運行? – Gromit
因爲它是一個總是自己調用的遞歸函數,就像嘗試'def f():f()'你永遠不會到達你的else塊,因爲每次調用函數時,它都會檢查if條件並再次調用自己。無盡的(好吧,直到Python出錯)。事實上,你總是最終使用遞歸調用...所以我不知道你期望發生什麼或者你的函數是怎麼做的。 –