[英]I am having trouble getting multithreading working in my Python project
我無法讓線程在我的代碼中工作。 如果我取出線程,for循環會將menu.txt附加到menu = []。 對於我的家庭作業,我需要更改它以使其與線程一起使用。 這是我到目前為止所擁有的,但我一直想出一個異常“模塊”object 不可調用。 我覺得我很接近,但我錯過了一些東西。
這是 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\Lesson10Project2_2051495\guiMain.py”,第 46 行,在(當前框架) t1 = itemClass.item()
您描述的錯誤是一個基本錯誤,實際上與線程本身沒有任何關系。 您定義的itemClass.item
class 期望得到四個 arguments。 當您嘗試在 GUI 代碼中創建 class 的實例時,您並沒有這樣做。 當您執行t1 = itemClass.item()
時,您不會傳遞任何 arguments。 稍后在您的代碼中,您嘗試使用 arguments 調用t1
,但這也不支持(您的 class 的實例不可調用)。
這些都沒有多大意義。 我懷疑潛在的問題是你試圖將線程插入一個沒有任何意義的地方。 您應該希望一個線程在您正在進行的事情發生的地方運行,並且您希望它在您在主線程中執行其他操作時繼續發生。 您顯示的代碼部分似乎與它不匹配。 您只是在這里定義菜單項。 沒有任何正在進行的事情需要線程。
您可能需要重新考慮此代碼的結構並將線程放在其他地方。 例如,菜單項一旦被選中,就可以啟動一個在后台持續運行的線程。 但是線程創建將由 GUI 內容(從菜單中選擇)觸發,而不是在定義菜單項時預先創建和啟動。
1.你還沒有在任何地方定義 itemClass 所以我假設你 ment item 所以嘗試: from itemClass import item
t1 = item()
2.you have not pass any arguments to init item of class
3.不清楚你想用線程實現什么
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.