【问题标题】:Tkinter: radio button getting dataset and a function to find matches and mismatches between datasetsTkinter:获取数据集的单选按钮和查找数据集之间匹配和不匹配的函数
【发布时间】:2022-01-13 08:03:48
【问题描述】:

在 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()**

【问题讨论】:

    标签: function tkinter radio-button


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,令人印象深刻:)
    • 您好,如果我想要第三个列表的第三个单选按钮并查看两个或所有三个列表是否有共同的单词怎么办?这是我所做的,当然不起作用。为了更容易,我消除了不匹配,只使用匹配。我想我开始是对的,但我不明白如何调整功能......
    猜你喜欢
    • 2012-10-09
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多