#python #keyboard-events
Вопрос:
Я практикуюсь в программировании, создавая программу кассового аппарата. К сожалению, я столкнулся с проблемой, когда дело доходит до удаления объекта. Я использую модуль клавиатуры, и для аннулирования у меня есть он, чтобы он удалял горячие клавиши для отделов (которые добавляют продукт в продажу), чтобы изменить их функцию, чтобы удалить продукт из продажи, затем удалить и добавить обратно исходные горячие клавиши отдела. К сожалению, после аннулирования продукта программа не позволит мне использовать ни одну из горячих клавиш, пока я не нажму горячую клавишу отдела, к которому был прикреплен продукт, который я аннулировал. Вот мой длинный, но, надеюсь, понятный код. Для целей тестирования я заранее определил отделы, поэтому, когда вы начинаете, вы просто вводите цену (без десятичной дроби), а затем нажимаете «q», «w» или «e» для отдела. Если вы хотите аннулировать, вы указываете эту цену, нажимаете «-«, а затем горячую клавишу для отдела, в который вы изначально добавили этот продукт.
import keyboard from functools import partial num="" subtotal=0.00 under=False index=0 departments=[] numDepartments=0 letters=['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'] depHotkeys=[] canComplete=False products=[] paymentMethod="" temp=[] class depType: def __init__(self,departmentType,key) -gt; None: self.departmentType=departmentType self.key=key def getDepartment(self): return self.departmentType def getKey(self): return self.key class item: def __init__(self,department,price,hotkey) -gt; None: self.department=department self.price=price self.hotkey=hotkey def getDepartment(self): return self.department def getPrice(self): return self.price def getHotkey(self): return self.hotkey def __str__(self) -gt; str: return "{}: {}".format(self.department,self.price) class invoice: def __init__(self,subtotal,products,change,payment) -gt; None: self.subtotal=subtotal self.products=products self.change=change self.payment=payment def add(pressedKey): global subtotal global num if num=="": price=0 else: price=int(num) forCount=0 for keyPress in depHotkeys: if keyPress==pressedKey: product=item(departments[forCount],price,keyPress) products.append(product) print(product) forCount =1 subtotal =(price/100) num="" canComplete=False forCount=0 def type(i): global num num =str(i) print(num,end='r') def subtract(): canVoid=False global subtotal global num if num=="": price=0 else: price=int(num) i=0 voided=False for x in depHotkeys: keyboard.remove_hotkey(x) keyboard.add_hotkey(x,partial(void,price)) i =1 def void(price): pressed=keyboard.read_hotkey() global subtotal voided=False i=0 x=0 for obj in products: if pressed==obj.getHotkey() and price==obj.getPrice() and not voided: print("V-gt;{}: -{}".format(obj.getDepartment(),price)) del products[x] voided=True x =1 for i in depHotkeys: keyboard.remove_hotkey(i) keyboard.add_hotkey(i,partial(add,i)) subtotal-=(price/100) num="" canComplete=False forCount=0 def getSubtotal(): global canComplete form="${:,.2f}".format(subtotal) print("Subtotal: {}".format(form)) canComplete=True def complete(): global subtotal global num if canComplete: if num=="": moneyGiven=0 else: moneyGiven=int(num) main() moneyGiven=float(moneyGiven/100) change=moneyGiven-subtotal changeForm="${:,.2f}".format(change) print("Change {}".format(changeForm)) else: print("You must obtain the subtotal before completing a sale. Input money again.n") num="" def main(): print("nn") for printer in products: print("n{}".format(printer)) getSubtotal() '''while not under: numDepartments=int(input("Number of departments (maximum is 26): ")) if numDepartmentsgt;0 and numDepartmentslt;=26: under=True''' numDepartments=3 while indexlt;numDepartments: depHotkeys.append(letters[index]) index =1 tempDep=["Deli","Grocery","Bakery"] index=0 for x in depHotkeys: #dep=input("Enter the department for '{}': ".format(x)) dep=tempDep[index] departments.append(dep) part=depType(dep,x) temp.append(part) keyboard.add_hotkey(x,partial(add,x)) index =1 for i in range(10): keyboard.add_hotkey(str(i),partial(type,i)) keyboard.add_hotkey('-',subtract) keyboard.add_hotkey('=',getSubtotal) keyboard.add_hotkey('enter',complete) keyboard.add_hotkey('tab',main) keyboard.wait('esc')