我無法讓執行緒在我的代碼中作業。如果我取出執行緒,for 回圈會將 menu.txt 附加到 menu = []。對于我的作業,我需要更改它,以便它可以使用執行緒。到目前為止,這是我所擁有的,但我不斷提出一個例外“模塊”物件不可呼叫。我覺得我很接近,但我錯過了一些東西。
這是 itemClass.py -
class item(Thread): #class for the menu items
def __init__(self, name, wholeSale, retail, orderCount):
Thread.__init__(self)
self.name = name
self.wholeSale = wholeSale
self.retail = retail
self.orderCount = orderCount
這是 guiMain.py -
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
from PIL import ImageTk,Image
import manager
import restaurant
import itemClass
import threading
from threading import *
if __name__ == "__main__":
menu = []
t1 = itemClass.item()
t1.start()
with open("menu.txt") as f: #reads menu.txt to store in menu variable
for line in f.readlines():
arr = line.split(",")
menu.append(t1(arr[0],float(arr[1]),float(arr[2]),int(arr[3])))
mainGUI(選單)
這是 menu.txt -
Chicken Sandwich,3.5,4.99,16
Spicy Chicken Sandwich,3.75,5.49,21
Chicken Tender Box,4.17,5.99,22
Spicy Tender Box,4.38,6.49,10
Fries,1.15,2.99,22
拋出的例外 -
Message=item.__init__() missing 4 required positional arguments: 'name',
'wholeSale', 'retail', and 'orderCount'
Source=C:\Users\neodr\Desktop\PythonClass\Lesson10_2051495\Lesson10Project2_2051495\guiMain.py StackTrace: 檔案“C:\Users\neodr\Desktop\PythonClass\Lesson10_2051495\Lesson20051495,Current_10495”框架) t1 = itemClass.item()
uj5u.com熱心網友回復:
您描述的錯誤是一個基本錯誤,實際上與執行緒本身沒有任何關系。itemClass.item您定義的類需要四個引數。當您嘗試在 GUI 代碼中創建類的實體時,您并沒有這樣做。當您這樣做時t1 = itemClass.item(),您不會傳遞任何引數。稍后在您的代碼中,您嘗試t1使用引數呼叫,但這也不支持(您的類的實體不可呼叫)。
這些都沒有多大意義。我懷疑潛在的問題是您試圖將執行緒插入一個沒有任何意義的地方。您應該希望一個執行緒在您正在進行的事情發生的地方運行,并且您希望它在您在主執行緒中做其他事情時繼續發生。您顯示的代碼部分似乎與此不符。您只是在此處定義選單項。沒有什么正在進行中需要執行緒。
您可能需要重新考慮此代碼的結構并將執行緒放在其他地方。例如,選單項一旦被選中,就可以啟動一個在后臺持續運行的執行緒。但是執行緒創建將由 GUI 內容(從選單中選擇)觸發,而不是在定義選單項時預先創建和啟動。
uj5u.com熱心網友回復:
1.你還沒有在任何地方定義 itemClass 所以我假設你提到了 item 所以嘗試: from itemClass import item
t1 = item()
2.你沒有給item類的init方法傳遞任何引數
3.不清楚你想用執行緒實作什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/387563.html
上一篇:QML屬性的依賴評估順序
