这是如何完成的示例代码。它很简单,因此您可以更好地理解它。
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.geometry('400x400')
root.title("matches and mismatches")
var = tk.IntVar()
var2 = tk.IntVar()
data_set_one = ["Michel", "John", "Carol", "Bob", "Justine", "Harry"]
data_set_two = ["Justine", "John", "Carol", "Bob", "Josh", "Marcello"]
dictionary = [{"id": 1, "data_set": data_set_one}, {"id": 2, "data_set": data_set_two}]
def matches(set1, set2):
for item in dictionary:
if item["id"] == set1.get():
first_set = item["data_set"]
elif item["id"] == set2.get():
second_set = item["data_set"]
else:
continue
match = []
for k in first_set:
for v in second_set:
if k == v:
match.append(k + ',')
messagebox.showinfo("Matches", message=match)
def mismatches(set1, set2):
for item in dictionary:
if item["id"] == set1.get():
first_set = item["data_set"]
elif item["id"] == set2.get():
second_set = item["data_set"]
else:
continue
mismatch = []
for k in first_set:
if k not in second_set:
mismatch.append(k + ',')
messagebox.showinfo("Mismatches", message=mismatch)
tk.Radiobutton(root, text='Dataset one', variable=var, value=1).pack()
tk.Radiobutton(root, text='Dataset two', variable=var2, value=2).pack()
Matches = tk.Button(root, text='Matches', command=lambda: matches(var, var2)).pack(pady=5)
Mismatches = tk.Button(root, text='Mismatches', command=lambda: mismatches(var, var2)).pack(pady=5)
root.mainloop()
导入从from tkinter import * 更改为import tkinter as tk。
创建了两个变量var 和var2,它们是int 类型。在创建dictionary 列表后,每个data_set 都被赋予其id。在radiobuttons、variable 和value 中添加。 (对于每个数据集都有tk.IntVar() 并且值等于id 在dictionary 内)。创建了两个函数mismatches 和matches,并且这两个函数都有两个parameters。
在函数matches 内部,我们检查dictionary 内部的id 是否等于选定的radiobutton,如果是,则为该项目分配变量first_set 的值dictionary。创建空list match,在两个loops 中检查两个列表是否有匹配项,如果有匹配项,则将其添加到列表match。在messagebox 中设置了标题并且消息等于match。在mismatches 函数中,一切都类似于matches 函数。在mismatches 中,获取匹配/不匹配的第二种方式显示在for loop。