set 方法为列表分配了太多值,我每个按钮只需要一个值

问题描述 投票:0回答:0

问题是我使用 functools 子类 partial 将一个函数分配给表单上的不同按钮,以将文本值添加到列表中,当我将这些值打印到 shell 时,我每次点击只分配该值 5 次,但我只需要为每个按钮单击添加是或否,但每次单击我获得的值多 5 倍,列表打印 5 倍

import tkinter as tk
import sqlite3
import os
import json
from functools import partial
from tkinter import messagebox
from tkinter import Toplevel
from tkinter.messagebox import showinfo
from tkinter import filedialog, messagebox
from sqlalchemy import values

class Cuestionario_Uno(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()


    def createWidgets(self):
        
        self.lista_de_respuestas = []
        self.lbl_encabezado = tk.Label(self, text="Alexis Bar Expert System Forms", fg="white", bg="darkgray", font=("Open Sans", 10), padx=10, pady=10)
        self.lbl_encabezado.grid(row=0, column=0, columnspan=5, sticky='w')
        self.lbl_p1 = tk.Label(self, text="Fatiga?:", font=('Open Sans', 10), bd=10)
        self.lbl_p1.grid(row=1, column=0, padx=5, pady=5, sticky='w')
        self.btn_uno = tk.Button(self, text="SI", command=partial(self.responder, "yes,"))
        self.btn_uno.grid(row=1, column=1, sticky='w', padx=5, pady=5)
        self.btn_dos = tk.Button(self, text="NO", command=partial(self.responder, "no,"))
        self.btn_dos.grid(row=1, column=2, sticky='w', padx=5, pady=5)
        self.lbl_p2 = tk.Label(self, text="Aumento de peso?:", font=('Open Sans', 10), bd=10)
        self.lbl_p2.grid(row=2, column=0, padx=5, pady=5, sticky='w')
        self.btn_tres = tk.Button(self, text="SI", command=partial(self.responder, "yes,"))
        self.btn_tres.grid(row=2, column=1, sticky='w', padx=5, pady=5)
        self.btn_cuatro = tk.Button(self, text="NO", command=partial(self.responder, "no,"))
        self.btn_cuatro.grid(row=2, column=2, sticky='w', padx=5, pady=5)
        self.lbl_p3 = tk.Label(self, text="Pérdida de peso?", font=('Open Sans', 10), bd=10)
        self.lbl_p3.grid(row=3, column=0, padx=5, pady=5, sticky='w')
        self.btn_cinco = tk.Button(self, text="SI", command=partial(self.responder, "yes,"))
        self.btn_cinco.grid(row=3, column=1, sticky='w', padx=5, pady=5)
        self.btn_seis = tk.Button(self, text="NO", command=partial(self.responder, "no,"))
        self.btn_seis.grid(row=3, column=2, sticky='w', padx=5, pady=5)
        
        
        self.lbl_p4 = tk.Label(self, text="Rostro hinchado?", font=('Open Sans', 10), bd=10)
        self.lbl_p4.grid(row=4, column=0, padx=5, pady=5, sticky='w')
        self.btn_siete = tk.Button(self, text="SI", command=partial(self.responder, "yes,"))
        self.btn_siete.grid(row=4, column=1, sticky='w', padx=5, pady=5)
        self.btn_ocho = tk.Button(self, text="NO", command=partial(self.responder, "no,"))
        self.btn_ocho.grid(row=4, column=2, sticky='w', padx=5, pady=5)
        self.lbl_p5 = tk.Label(self, text="Problemas para tolerar el frío?", font=('Open Sans', 10), bd=10)
        self.lbl_p5.grid(row=5, column=0, padx=5, pady=5, sticky='w')
        self.btn_nueve = tk.Button(self, text="SI", command=partial(self.responder, "yes,"))
        self.btn_nueve.grid(row=5, column=1, sticky='w', padx=5, pady=5)
        self.btn_diez = tk.Button(self, text="NO", command=partial(self.responder, "no,"))
        self.btn_diez.grid(row=5, column=2, sticky='w', padx=5, pady=5)
        
      
        self.btn_add = tk.Button(self, text="Continuar y guardar", font=('Open Sans', 10), bg="#009ACD", command=self.build_cuestionario_dos_listarr)
        self.btn_add.grid(row=6, column=0, sticky='w', padx=5, pady=5)
        
    # Add response values to StringVar
    def responder(self, respuesta):
        for i in range(0,4):
            self.lista_de_respuestas.insert(i, respuesta)
            i= i+1
            print(f"Respuesta: {self.lista_de_respuestas}")


    def build_cuestionario_dos_listarr(self):
    
        print("Iniciar el cuestionario 2")
        root5 = tk.Toplevel()    
        buildApp = Cuestionario_Dos(master=root5)

class Cuestionario_Dos(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()
    
    def createWidgets(self):
        self.lbl_text = tk.Label(self, text="Cuestionario 2 Administrator",fg="cyan",bg="grey", font=('arial', 18), width=40)
        self.lbl_text.grid(row=0, column=0, columnspan=2)

root = tk.Tk()
app = Cuestionario_Uno(master=root)
app.master.title("Expert system of the tiroides/Interface de Inicio")

app.mainloop()

我需要将答案发送给 python 专家系统算法以进行诊断

我尝试打印列表,但我得到的值比我需要的多,我期待收到一个包含回复的列表,但列表非常大,我只需要 5 个回复项目

yes or no
每个
button

python tkinter methods
© www.soinside.com 2019 - 2024. All rights reserved.