2 回答

TA貢獻1796條經驗 獲得超10個贊
Tkinter 是一個多層次的東西。盡管您在 Python 中使用它,但它實際上使用另一種語言 Tcl 來管理 GUI。
你得到那個錯誤信息
AttributeError: 'NoneType' object has no attribute '_root'
因為您試圖在啟動 Tcl 解釋器之前創建一個 Tkinter 對象,這在您執行root=Tk()
.
所以你需要重新組織你的代碼,以便
character = StringVar()
在你做之前不會被執行root=Tk()
。
character = StringVar()
導入時會執行該操作screenvalue
。您可以將 import 語句移動到 之后root=Tk()
,但最好進行更改,screenvalue
以便在導入時它不會運行代碼。
FWIW,character.set("4")
退貨None
,所以沒有在具有函數返回的是多點。此外,回調函數返回有用的值也沒有意義,因為您無法訪問回調返回的值。

TA貢獻1887條經驗 獲得超5個贊
您在第二個文件中創建和導入character = StringVar()的type函數范圍之外進行了定義。在命令中,from typing import type您僅導入type具有其作用域的函數,character而未在其中定義,這會導致您遇到錯誤。
如果您character = StringVar()進入函數的范圍,它將解決您的問題。
def type():
character = StringVar()
return character.set("4")
PS強烈建議不要使用影響python內置名稱的變量和函數名稱,例如'type'。
添加回答
舉報