Tkinter:单选按钮获取数据集和查找数据集之间匹配和不匹配的功能

Tkinter: radio button getting dataset and a function to find matches and mismatches between datasets

在 Python 中很新。 我正在尝试创建一个具有不同单选按钮的界面。 每个单选按钮都有一个数据集。 单击两个按钮会调用两个不同的功能:查找由单选按钮选择的数据集之间的匹配项和不匹配项。 结果打印在一个小部件中。 我真的无法使用匹配和不匹配的功能。 我可以帮忙知道如何进行吗? 最好的,

**from tkinter import *
from tkinter import messagebox
root = Tk()
root.geometry('400x400')
root.title("matches and mismatches")
def matches():
    messagebox.showinfo("function of finding matches")
def mismatches():
    messagebox.showinfo("function of finding mismatches")
Datasetone = ["Michel", "John", "Carol", "Bob", "Justine", 'Harry',]
Datasettwo = ["Justine", "John", "Carol", "Bob", "Josh", "Marcello"]
Radiobutton(root, text='Dataset one').pack()
Radiobutton(root, text='Dataset two').pack()
Matches = Button(root, text='Matches', command=matches).pack()
Mismatches = Button(root, text='Mismatches', command=mismatches).pack()
root.mainloop()**

这是如何完成的示例代码。很简单,所以你可以更好地理解它。

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。 创建了两个变量 varvar2,它们是 int 类型。在创建 dictionary 列表后,每个 data_set 都被赋予其 id。在radiobuttons中添加了variablevalue。 (对于每个数据集,tk.IntVar()dictionary 中的值等于 id。创建了两个函数 mismatchesmatches,并且两个函数都有两个 parameters。 在函数 matches 中,我们检查 dictionary 中的 id 是否等于选定的 radiobutton,如果是,则变量 first_set 被赋值为 dictionary 对于那个项目。创建空 list match 并在两个 loops 中检查两个列表是否有匹配项,如果有匹配项,则将其添加到列表 match 中。在 messagebox 中设置了标题,消息等于 match。在 mismatches 函数中,一切都类似于 matches 函数。在 mismatches 中,获得 matches/mismatches 的第二种方式显示在 for loop.