Tkinter:获取数据集的单选按钮和查找数据集之间匹配和不匹配的函数
Posted
技术标签:
【中文标题】Tkinter:获取数据集的单选按钮和查找数据集之间匹配和不匹配的函数【英文标题】:Tkinter: radio button getting dataset and a function to find matches and mismatches between datasets 【发布时间】: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()**
【问题讨论】:
【参考方案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
。
创建了两个变量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
。
【讨论】:
谢谢,令人印象深刻:) 您好,如果我想要第三个列表的第三个单选按钮并查看两个或所有三个列表是否有共同的单词怎么办?这是我所做的,当然不起作用。为了更容易,我消除了不匹配,只使用匹配。我想我开始是对的,但我不明白如何调整功能......以上是关于Tkinter:获取数据集的单选按钮和查找数据集之间匹配和不匹配的函数的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 StringVar 而不是 IntVar 时 Tkinter 的单选按钮都开始选中?
Python3 Tkinter基础 LabelFrame Radiobutton 形成两组不相互限制的单选按钮
我无法将我的 v-model 数据传递到我的后端以获取 vue.js 中的单选按钮类型,如何将选中的单选按钮值传递给我的后端?