2017-03-06 12 views
0

最初の変数をリストの最初の項目と等価にし、2番目の変数を2番目の項目に、3番目の変数を3番目の項目と等しくします。私はこれをループにしようとしてきましたが、うまくいきません。私は範囲とインデックスのために私が使用しようとしましたが、イベントオブジェクトはインデックス作成をサポートしていないと言います。これをループにすることができる他の方法はありますか?このtkinterコードをループに入れて短縮する方法はありますか?

import tkinter as tk 
from tkinter import * 
from random import randint 
import random 

WordsEasy1 = ["book","dictionary","paper","suitcase","jacket","box","folder","cabinet","abacus", 
"access","monitor","mouse","pencil","light","button","keyboard","country","pet","dog","love", 
"food","car","envelope","adapter","charger","board","tablet","cable","switch","case","rainbow", 
"stick","spoon","develop","hat","hands","cup","coffee","tea","letters","vase","duck","ear","fan", 
"clothes","shorts","pen","paint","alphabet","sound","money","basement","page","pause","break","fix", 
"flag","feather","speaker","message","capital","airport","tango","drink","language","type","journalist", 
"programmer","mountain","sunset","snow","ball","jersey","skirt","moon","remote","control","manual", 
"take","sign","traffic","crown","grass","garden","wallpaper","explanation","idea","pants","gym","teach", 
"bowl","shallow","deep","focus","strong","signal","process","screw","tools","quality","perseverance", 
"beauty","change","darkness","eclipse","set","bee","train","microscope","crash","interrupt","vocal", 
"can","failure","success","rate","graph","course","good","overlap","technique","yesterday","clock", 
"speed","jar","frame","fast","duty","post","mail","laundry","gift","presentation","public","media", 
"story","enhance","liberty","freedom","ownership","metal","cloud","virtual","reality","inception", 
"natural","nature","television","share","meteor","master","depart","shrimp"] 


wordeasy3a=[] 
wordeasy3b=[] 
wordeasy3c=[] 


a=0 
score=0 
wrong=0 

while a<3: 
    we1=randint(0,150) 
    wordeasyrw1=WordsEasy1[we1] 
    if wordeasyrw1 not in wordeasy3a: 
     wordeasy3a.append(wordeasyrw1) 
     a+=1 
    else: 
     pass 
if a==3: 
    a=0 

for i in wordeasy3a: 
    print(i) 


while a<3: 
    we2=randint(0,150) 
    wordeasyrw2=WordsEasy1[we2] 
    if wordeasyrw2 not in wordeasy3a: 
     wordeasy3b.append(wordeasyrw2) 
     a+=1 
    else: 
     pass 
if a==3: 
    a=0 

i=0 

print() 
for i in wordeasy3b: 
    print(i) 

root = Tk() 

def answer1(event1): 
    global score 
    global wrong 
    if event1.widget.get() == wordeasy3a[0]: 
     score+=1 
    else: 
     wrong+=1 
    print() 
    print(score) 
    print(wrong) 

def answer2(event2): 
    global score 
    global wrong 
    if event2.widget.get() == wordeasy3a[1]: 
     score+=1 
    else: 
     wrong+=1 
    print() 
    print(score) 
    print(wrong) 

def answer3(event3): 
    global score 
    global wrong 
    if event3.widget.get() == wordeasy3a[2]: 
     score+=1 
    else: 
     wrong+=1 
    print() 
    print(score) 
    print(wrong) 


def userinput(): 
    E3 = Entry(root, bd =2) 
    E3.pack (side = BOTTOM) 
    E3.bind('<Return>', answer3) 

    E2 = Entry(root, bd =2) 
    E2.pack (side = BOTTOM) 
    E2.bind('<Return>', answer2) 

    E1 = Entry(root, bd =2) 
    E1.pack (side = BOTTOM) 
    E1.bind('<Return>', answer1) 


userinput() 

root.mainloop() 

答えて

0

すべてのサンプル関数を提供し、それをlambdaと組み合わせるだけではどうですか?最初のシナリオでどのようにループが収まるかは実際にはわかりません。

def answer(event, index): 
    global score 
    global wrong 
    if event.widget.get() == list[index]: 
     score+=1 
    else: 
     wrong+=1 

def userinput(): 
    E1 = tk.Entry(root, bd=2) 
    E1.pack(side = BOTTOM) 
    E1.bind('<Return>', lambda event, arg=(0): answer(event, arg)) 

    E2 = tk.Entry(root, bd=2) 
    E2.pack(side = BOTTOM) 
    E2.bind('<Return>', lambda event, arg=(1): answer(event, arg)) 

    E3 = tk.Entry(root, bd=2) 
    E3.pack(side = BOTTOM) 
    E3.bind('<Return>', lambda event, arg=(2): answer(event, arg)) 

は、私はあなたがループに最後のビットを最小限に抑えることができると思いますが、あなたのウィジェットのポインタを持っている場合、それは最高のように私は、それをお勧めしません。

def userinput(): 
    for i in range(3): 
     temp = tk.Entry(root, bd=2) 
     temp.pack(side = BOTTOM) 
     temp.bind('<Return>', lambda event, arg=(i): answer(event, arg)) 
+0

実際にはコードを編集します。以前はラムダを使っていませんでした。どのように機能するのですか? – Sirius

+0

リストオブジェクトが呼び出せないと言ってみました – Sirius

+0

コンパイラから完全なエラーを出すことはできますか?最後の行全体のように。 – Dova

関連する問題