提问人:Serfrousse Serfrousse 提问时间:8/9/2023 更新时间:8/10/2023 访问量:42
用 tkinter/python 代码比较两个字典很麻烦
Trouble to compare two dictionnaries with a tkinter/python code
问:
我想将我的good_answer词典与我的结果词典进行比较。我的项目是随机生成项目,除了与图片关联的项目也随机选择。问题是我无法将用户答案与严格的答案进行比较。
我尝试了多种方法。首先是 set() - set(),但问题是我擅长使用 r1 和 r2 和 img2。所以我尝试将 var.get() : [can.image] 更改为 var.get() : [RandomImage],因为程序返回一些复杂的“tkinter.PhotoImage 对象位于 0*0000....“ 但我的代码没有实现我在单击 b1 时更改图像的事实。我不知道我能做什么。我被困在这里。 我是一个初学者,我认为我从一个太复杂的项目开始了。但是,我想了解这里的问题。 对不起,如果我的代码很糟糕。
from tkinter import *
from PIL import Image, ImageTk
import os
import random
import pandas
imagelist = ['C:\\Users\\...\\Desktop\\ECG Learner\\ecg.png','C:\\Users\\...\\Desktop\\ECG Learner\\img2.png']
textlist = ["1", "2", "3", "4"]
good_answer = {"1" : ['C:\\Users\\Noé\\Desktop\\ECG Learner\\ecg.png'],"2":['C:\\Users\\Noé\\Desktop\\ECG Learner\\img2.png']}
def open_fenetre2 () :
fenetre2 = Tk()
def callback () :
textlist = ["1", "2", "3", "4"]
can.delete("all")
RandomImage = random.choice(imagelist)
im = (RandomImage)
img=PhotoImage(file=im)
can.configure(width=img.width(), height=img.height())
can.create_image(img.width()/2,img.height()/2,image=img)
can.image =img
n1 = random.randrange(len(textlist))
RandomText1 =textlist[n1]
del(textlist[n1])
n2 = random.randrange(len(textlist))
RandomText2 = textlist[n2]
del(textlist[n2])
n3 = random.randrange(len(textlist))
RandomText3 =textlist[n3]
del(textlist[n3])
n4 = random.randrange(len(textlist))
RandomText4 = textlist[n4]
del(textlist[n4])
r1.config(text=RandomText1)
r2.config(text=RandomText2)
r3.config(text=RandomText3)
r4.config(text=RandomText4)
def selected ():
print(var.get())
def verification () :
resultat = { var.get() : [can.image]}
print(resultat)
diff = set(resultat)- set(good_answer)
print(diff)
if diff == set() :
print("vrai")
true.config(bg = "green")
false.config(bg="white")
else :
print("faux")
false.config(bg = "red")
true.config(bg="white")
n1 = random.randrange(len(textlist))
RandomText1 =textlist[n1]
del(textlist[n1])
n2 = random.randrange(len(textlist))
RandomText2 = textlist[n2]
del(textlist[n2])
n3 = random.randrange(len(textlist))
RandomText3 =textlist[n3]
del(textlist[n3])
n4 = random.randrange(len(textlist))
RandomText4 = textlist[n4]
del(textlist[n4])
fenetre = Tk()
fenetre.title("ECG Learner")
fenetre.config(bg="white")
fenetre.geometry("500x500")
fenetre.minsize(200,200)
can = Canvas(fenetre)
can.pack()
RandomImage = random.choice(imagelist)
im = (RandomImage)
img=PhotoImage(file=im)
can.configure(width=img.width(), height=img.height())
can.create_image(img.width()/2,img.height()/2,image=img)
can.image =img
can2 = Canvas(fenetre)
can2.pack(anchor ="s")
menu1 = Menu(fenetre)
menu1.add_cascade(label ="fichier")
menu1.add_cascade(label ="option")
menu1.add_cascade(label ="aide")
fenetre.config(menu = menu1)
cadre1 = Frame(fenetre)
cadre1.pack()
var = StringVar()
b1 = Button (cadre1, text = 'Next ECG', command=callback)
b1.pack()
b2 = Button (cadre1, text = 'Quitter', command= fenetre.destroy)
b2.pack()
b3 = Button (fenetre, text ="Valider", command= verification)
b3.pack()
r1 = Radiobutton(can2, text = RandomText1, variable = var, value = "1", command = selected)
r1.pack()
r2 = Radiobutton(can2, text = RandomText2, variable = var, value = "2", command = selected)
r2.pack()
r3 = Radiobutton(can2, text = RandomText3, variable = var, value = "3", command = selected)
r3.pack()
r4 = Radiobutton(can2, text = RandomText4, variable = var, value = "4", command = selected)
r4.pack()
true = Label(fenetre, text = "Vrai", font =("Courier", 30))
true.pack()
false = Label(fenetre, text = "Faux", font =("Courier", 30))
false.pack()
fenetre.mainloop()
感谢您抽出宝贵时间!!
答:
0赞
Сергей Кох
8/10/2023
#1
试着用随机选择来比较答案,而不是两本词典。good_answer[var.get()][0]
can.image.cget("file")
from tkinter import *
import random
imagelist = ['C:\\Users\\...\\Desktop\\ECG Learner\\ecg.png','C:\\Users\\...\\Desktop\\ECG Learner\\img2.png']
textlist = ["1", "2", "3", "4"]
good_answer = {"1": ['C:\\Users\\...\\Desktop\\ECG Learner\\ecg.png'],
"2": ['C:\\Users\\...\\Desktop\\ECG Learner\\img2.png'],
"3": [""],
"4": [""]}
def open_fenetre2():
fenetre2 = Tk()
def callback():
textlist = ["1", "2", "3", "4"]
can.delete("all")
RandomImage = random.choice(imagelist)
im = (RandomImage)
img = PhotoImage(file=im)
can.configure(width=img.width(), height=img.height())
can.create_image(img.width() / 2, img.height() / 2, image=img)
can.image = img
n1 = random.randrange(len(textlist))
RandomText1 = textlist[n1]
del (textlist[n1])
n2 = random.randrange(len(textlist))
RandomText2 = textlist[n2]
del (textlist[n2])
n3 = random.randrange(len(textlist))
RandomText3 = textlist[n3]
del (textlist[n3])
n4 = random.randrange(len(textlist))
RandomText4 = textlist[n4]
del (textlist[n4])
r1.config(text=RandomText1)
r2.config(text=RandomText2)
r3.config(text=RandomText3)
r4.config(text=RandomText4)
def selected():
print(var.get())
def verification():
resultat = can.image.cget("file")
print(resultat)
choice = good_answer[var.get()][0]
print(choice)
if resultat == choice:
print("vrai")
true.config(bg="green")
false.config(bg="white")
else:
print("faux")
false.config(bg="red")
true.config(bg="white")
n1 = random.randrange(len(textlist))
RandomText1 = textlist[n1]
del (textlist[n1])
n2 = random.randrange(len(textlist))
RandomText2 = textlist[n2]
del (textlist[n2])
n3 = random.randrange(len(textlist))
RandomText3 = textlist[n3]
del (textlist[n3])
n4 = random.randrange(len(textlist))
RandomText4 = textlist[n4]
del (textlist[n4])
fenetre = Tk()
fenetre.title("ECG Learner")
fenetre.config(bg="white")
fenetre.geometry("500x500")
fenetre.minsize(200, 200)
can = Canvas(fenetre)
can.pack()
RandomImage = random.choice(imagelist)
im = (RandomImage)
img = PhotoImage(file=im)
can.configure(width=img.width(), height=img.height())
can.create_image(img.width() / 2, img.height() / 2, image=img)
can.image = img
can2 = Canvas(fenetre)
can2.pack(anchor="s")
menu1 = Menu(fenetre)
menu1.add_cascade(label="fichier")
menu1.add_cascade(label="option")
menu1.add_cascade(label="aide")
fenetre.config(menu=menu1)
cadre1 = Frame(fenetre)
cadre1.pack()
var = StringVar()
b1 = Button(cadre1, text='Next ECG', command=callback)
b1.pack()
b2 = Button(cadre1, text='Quitter', command=fenetre.destroy)
b2.pack()
b3 = Button(fenetre, text="Valider", command=verification)
b3.pack()
r1 = Radiobutton(can2, text=RandomText1, variable=var, value="1", command=selected)
r1.pack()
r2 = Radiobutton(can2, text=RandomText2, variable=var, value="2", command=selected)
r2.pack()
r3 = Radiobutton(can2, text=RandomText3, variable=var, value="3", command=selected)
r3.pack()
r4 = Radiobutton(can2, text=RandomText4, variable=var, value="4", command=selected)
r4.pack()
true = Label(fenetre, text="Vrai", font=("Courier", 30))
true.pack()
false = Label(fenetre, text="Faux", font=("Courier", 30))
false.pack()
fenetre.mainloop()
评论
textlist = ["1", "2", "3", "4"]