9 svar
152 visningar
villsovaa 925
Postad: 21 feb 2022 21:29

felsök

Hej!

Ska skapa ett glosprogram enligt nedanstående kod. Någonting med koden är dock fel och jag vet inte varför. Dessutom vill jag i stället lägga in en fil med glosor i stället där glosorna, i pythonfilen, står varannan engelska och varannan svenska. Man tar alltså varannat element i filen till svenska och motsvarigheten till engelska. Dictionaryn kan tas bort. Men vet inte hur jag ska göra! Hjälp!

from tkinter import *
top = Tk()
from random import *
from time import *

top.config(background="mistyrose")

gloslista = {}

sv = StringVar()
eng = StringVar()
inmatning = StringVar()
få = IntVar()

def inmata():
    svenska = sv.get()
    engelska = eng.get()
    gloslista[svenska] = engelska
    print(gloslista)


def förhör():
    rensa()
    rubrik = Label(top, text = "Glosförhör")
    rubrik.place(x = 190, y = 10)

    rätt = Label(top, text = '')
    rätt.place(x = 10, y = 50)

    def svar():
        matain = fråga.get()
        print(matain)
        if gloslista[fråga] == matain:
            rätt.config(text = "rätt")
        else:
            rätt.config(text = "fel")
        få.set(1)

    for n in range(2):
        fråga = choice(list(gloslista.keys()))

        fråga_label = Label(top, text = fråga)
        fråga_label.place(x = 10, y = 10)

        fråga_entry = Entry(top, textvariable = inmatning)
        fråga_entry.place(x = 50, y = 10)

        svarknapp = Button(top, text = 'Svara', command = svar)
        svarknapp.place(x = 10, y = 100)

        svarknapp.wait(få)


def rensa():
    for i in top.winfo_children():
        i.destroy()


sv_label = Label(top, text = "Svenska")
sv_label.place(x = 10, y = 10)

sv_entry = Entry(top, textvariable = sv)
sv_entry.place(x = 90, y = 10)


eng_label = Label(top, text = "Engelska")
eng_label.place(x = 10, y = 50)

eng_entry = Entry(top, textvariable = eng)
eng_entry.place(x = 90, y = 50)


eng_knapp = Button(top, text = 'Spara', command = inmata)
eng_knapp.place(x = 10, y = 100)


förhörknapp = Button(top, text = 'Glosförhör', command = förhör)
förhörknapp.place(x = 60, y = 100)

top.geometry("500x500")
top.mainloop()
Laguna Online 30484
Postad: 21 feb 2022 22:01

Funkar inmata?

villsovaa 925
Postad: 21 feb 2022 22:02
Laguna skrev:

Funkar inmata?

Ja? Eller den borde väl göra det?

Laguna Online 30484
Postad: 21 feb 2022 22:05

Jag tycker det, men jag har inte provkört. Vad händer när du trycker på Glosförhör?

villsovaa 925
Postad: 21 feb 2022 22:07 Redigerad: 21 feb 2022 22:09
Laguna skrev:

Jag tycker det, men jag har inte provkört. Vad händer när du trycker på Glosförhör?

Det kommer felmeddelandet:

Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/Users/a/PycharmProjects/30-08-21/Glosprogram.py", line 38, in svar
matain = fråga.get()
AttributeError: 'str' object has no attribute 'get'

 

 

villsovaa 925
Postad: 21 feb 2022 22:13
villsovaa skrev:
Laguna skrev:

Jag tycker det, men jag har inte provkört. Vad händer när du trycker på Glosförhör?

Det kommer felmeddelandet:

Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/Users/a/PycharmProjects/30-08-21/Glosprogram.py", line 38, in svar
matain = fråga.get()
AttributeError: 'str' object has no attribute 'get'

 

 

Ok löste det, men vet fortfarande inte hur nästa element i dictionary ska genereras om inte med en for-loop. Det enda som händer är att det första elementet i dictionary kommer upp. Sen stannar det. 

Laguna Online 30484
Postad: 21 feb 2022 22:55

Jag har inte försökt förstå koden helt och hållet, och jag kan inte allt som du använder heller. Vad är det för dictionary du menar?

villsovaa 925
Postad: 21 feb 2022 22:56
Laguna skrev:

Jag har inte försökt förstå koden helt och hållet, och jag kan inte allt som du använder heller. Vad är det för dictionary du menar?

Alltså att jag skapar en dictionary där orden jag skriver in läggs. Dvs "gloslista" i min kod. 

Laguna Online 30484
Postad: 21 feb 2022 23:10

Nu har jag provkört. Jag får i stället att Button inte har något attribut wait.

villsovaa 925
Postad: 21 feb 2022 23:12 Redigerad: 21 feb 2022 23:13
Laguna skrev:

Nu har jag provkört. Jag får i stället att Button inte har något attribut wait.

Får jag också. Tog bort den raden. Och hur ska jag göra för att få fram nästa inmatade ord i listan när jag trycker på "svara"?

 

 

Svara
Close