"元组"对象不可调用:模块 Tkinter,具有方法库选择的对象列表框。语言: 蟒蛇



亲爱的程序员们,大家好。

我有一个";元组对象不可调用";埃罗尔和我需要你的帮助。

File "D:Miniconda3envsml_envlibtkinter__init__.py", line 1705, in __call__
return self.func(*args)
File "D:DesktopGestion de projet mayadigitalinter_admin.py", line 242, in valider_suppression
for i in self.employes():
TypeError: 'tuple' object is not callable

我正在创建一个链接到数据库的小软件。其中一个选项允许管理员删除一个或多个用户。

为此,我在Tkinter实例中创建了一个Listbox。管理员选择要删除的用户后,我想显示这些用户的列表以供确认。

这就是我的问题所在:

我需要知道哪些是在列表框上点击的项目,所以我使用了这个方法:

self.employes=self.liste_employes.curselection()

但是,由于以下代码,当我想使用self.employers时,我会收到错误。

for i in self.employes():
self.employes_a_supprimer.insert(i, rows[i][1]+' '+rows[i][2])
self.employes_a_supprimer.pack()

这是我的代码摘录:


# -*- coding: utf-8 -*-
"""
Created on Thu Jul 16 21:30:12 2020
@author: cheri
"""
from tkinter import *
import bdd_access as ba
class Interface(Frame):

def __init__(self, fenetre, **kwargs):
"""Initialisation de la fenêtre"""
Frame.__init__(self, fenetre, width=768, height=576, **kwargs)
self.pack(fill=BOTH)
self.menu()

def supprimer(self):

self.destroy_menu()
rows=ba.liste_employes()

self.tx_selection=Label(self, text="Veuillez choisir le(s) employé(s) à supprimer.")
self.tx_selection.pack()
self.liste_employes=Listbox(self,selectmode=BROWSE)
for i in range (0,len(rows)):
self.liste_employes.insert(i,rows[i][1]+' '+rows[i][2])
self.liste_employes.pack()

self.button_valider=Button(self,text="Valider",command=self.valider_suppression)
self.button_valider.pack()
def destroy_supprimer(self):
self.title.destroy()
self.tx_selection.destroy()
self.liste_employes.destroy()
self.button_valider.destroy()
self.button_annuler.destroy()

def valider_suppression(self):
self.employes=self.liste_employes.curselection()
self.destroy_supprimer()
self.title=Label(self,text="Veuillez confirmer que vous souhaitez bien supprimer les employés suivants:")
self.title.pack()

self.employes_a_supprimer=Listbox(self, selectmode=SINGLE)
print(self.employes)
print(type(self.employes))
for i in self.employes():
self.employes_a_supprimer.insert(i, rows[i][1]+' '+rows[i][2])
self.employes_a_supprimer.pack()

self.button_confirmer=Button(self,text="Confirmer",command=self.suppression_bdd)
self.button_confirmer.pack()

self.button_retour=Button(self,text="Modifier la selection",command=retour_suppression)
self.button_retour.pack()
self.button_annuler=Button(self,text="Annuler l'opération",command=self.valider_supprimer_to_menu)
self.button_annuler.pack()



def menu(self):
# Création de nos widgets        
self.title = Label(self, text="Bienvenue sur l'interface d'administration, que souhaitez-vous faire?")
self.title.pack()


self.bouton_affichage_logins= Button(self,text="Affichage de tous les logins et mots de passe",command=self.affichage)
self.bouton_affichage_logins.pack()

self.bouton_ajout=Button(self,text="Ajouter un employé au système",command=self.ajout)
self.bouton_ajout.pack()

self.bouton_suppression=Button(self,text="Supprimer un employé du système",command=self.supprimer)
self.bouton_suppression.pack()

self.bouton_changer=Button(self,text="Changer un mot de passe",command=self.changer)
self.bouton_changer.pack()

self.bouton_quitter = Button(self, text="Quitter", command=self.destroy)
self.bouton_quitter.pack()
def destroy_menu(self):
self.title.destroy()
self.bouton_affichage_logins.destroy()
self.bouton_ajout.destroy()
self.bouton_suppression.destroy()
self.bouton_changer.destroy()
self.bouton_quitter.destroy()

是的,这是法国代码;(

Supprimer=删除

验证抑制=确认抑制

我希望我已经把自己说得足够清楚,可以理解

非常感谢你在我的帖子中提供未来的答案。

答案是我的代码中有一个错误,我看不到,感谢@bryan oakley的帮助。

正确的代码是:

for i in self.employes: #Without parenthesis
self.employes_a_supprimer.insert(i, rows[i][1]+' '+rows[i][2])
self.employes_a_supprimer.pack()

问题解决了!

最新更新