私はこれを尋ねるのは本当にばかげているように感じますが、コードを改善する方法について数日間苦労しており、実際の設計を改善する明白な方法を見分けることができません。
キー イベントを使用して、いくつかのリスト間を移動する必要があります。
簡単にするために、最初のリストが「ショップ」で、2 番目のリストが「製品」であるとしましょう</p>
ショップ = [ShopA,ShopB,ShopC,ShopcD,ShopE]
Products = [オレンジ、牛乳、水、チョコレート、米]
キーボードのキー「1」と「2」を使用して、「ショップ」リストに沿ってそれぞれ前後に移動したいとします。一方、キー「3」と「4」を使用して、「Products」リストをそれぞれ前後に移動したいと考えています。
今、私が持っているメソッドは、「ShopCounter」と「ProductsCounter」という 2 つのカウンターで構成されています。ちなみに、「Shops」リストに沿って移動するたびに、「ProductsCounter」をゼロに設定して、最初のアイテム(この例ではオレンジになります:)のチェックから開始できるようにします:)
私の問題は、カウンターの場所/デザインにあります。このコードには 4 つのセクションがあります。入力したいキー命令ごとに 1 つ (次/前のショップ、次/前の製品)。
Python はリストを 0 から開始するため、各コード セクションの最後にカウンターを配置するのが明らかな理由です。ただし、これを行う場合、前のコマンドが前方/後方であった場合、後方/前方キーを各キーを 2 回押す必要があります。前のコマンドから増加したカウンターを保持するため
各セクションの先頭にカウンターを配置すると (各セクションがより理解しやすくなります...)、「if」チェックを設定して、コードがリストの最初の項目を克服しないようにする必要があります。 . また、この設計に従って、追加の if チェックをチェックして、リストの長さを超えるアイテムを見つけようとしないことを確認する必要があります...
この種の操作を処理する正しい方法に関するアドバイスはありますか?? それは大歓迎です。
編集:
このコードは、変更したい構造で提供した例を表しています。それは機能しますが、これをより論理的な方法で行う方法が必要だと思います。
import matplotlib.pyplot as plt
def CounterManager(Key, ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter):
if Key == "1" or Key == "2":
ProductsCounter = 0
if ShopsCounter == 0 and ShopsStarterCheck == True:
ShopsStarterCheck = False
print "eo"
elif Key == "1" :
ShopsCounter = ShopsCounter + 1
elif Key == "2" :
ShopsCounter = ShopsCounter - 1
if ShopsCounter <= 0:
ShopsCounter = 0
if ShopsCounter >= ShopNumber - 1:
ShopsCounter = ShopNumber - 1
ProductsStarterCheck = True
print "--Shop: " + str(ShopsCounter)
if Key == "3" or Key == "4":
if ProductsCounter == 0 and ProductsStarterCheck == True:
ProductsStarterCheck = False
elif Key == "3" :
ProductsCounter = ProductsCounter + 1
elif Key == "4" :
ProductsCounter = ProductsCounter - 1
if ProductsCounter <= 0:
ProductsCounter = 0
if ProductsCounter >= ProductsNumber - 1:
ProductsCounter = ProductsNumber - 1
print "--Product: " + str(ProductsCounter)
return ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter
def Key_Manager(event):
global ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter
if event.key == '1' or event.key == '2':
ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter = CounterManager(event.key, ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter)
print Shops[ShopsCounter]
if event.key == '3' or event.key == '4':
ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter = CounterManager(event.key, ShopNumber, ProductsNumber, ShopsStarterCheck, ProductsStarterCheck, ShopsCounter, ProductsCounter)
print Products[ProductsCounter]
Shops = ["ShopA","ShopB","ShopC","ShopD","ShopE"]
Products = ["Oranges", "Milk", "Water", "Chocolate", "Rice"]
ShopNumber, ProductsNumber = len(Shops), len(Products)
ShopsStarterCheck,ProductsStarterCheck = True,True
ShopsCounter,ProductsCounter, = 0,0
Fig1=plt.figure(figsize=(10,5))
Axis1 = Fig1.add_subplot(111)
Fig_Connection = {}
Fig_Connection['cid'] = plt.gcf().canvas.mpl_connect('key_press_event',Key_Manager) #Create figure an connect the event to it
plt.show()