versuche ein Python-Programm (MVC-Pattern) zu bauen, bin Anfänger und habe Probleme in der View.
Folgendes :
siehe Code: def adHum(self) # stringVar.get()'s sind leer warum??
def delHum(self) # das gleiche Problem
Kann mir jemand weiter helfen???
Code: Alles auswählen
from tkinter import *
import tkinter as tk
import tkinter.messagebox
import tkinter.ttk as ttk
class View(ttk.Frame):
def __init__(self,parent):
super().__init__(parent)
self.mainLab = ttk.Label(self,text='HumList')
self.grid(row=1,column=1)
self.butNewHum = ttk.Button(self,text='NewHum',command=self.insertHum)
self.butDelHum = ttk.Button(self,text='DelHum',command=self.rootDelHum)
self.butNewHum.grid(row=1,column=1)
self.butDelHum.grid(row=2,column=2)
self.namVar = tk.StringVar()
self.altVar = tk.StringVar()
self.delNam = tk.StringVar()
def insertHum(self):
self.root2 = Tk()
namLab = ttk.Label(self.root2,text='Name')
entNam = ttk.Entry(self.root2,textvariable=self.namVar)
namLab.grid(row=1,column=1)
entNam.grid(row=1,column=2)
altLab = ttk.Label(self.root2,text='Alter')
entNam = ttk.Entry(self.root2,textvariable=self.altVar)
altLab.grid(row=2,column=1)
entNam.grid(row=2,column=2)
okBut = ttk.Button(self.root2,text='Einfügen',command=self.adHum)
okBut.grid(row=3,column=1)
abbBut = ttk.Button(self.root2,text='Abbruch',command=self.closeRoot2)
abbBut.grid(row=3,column=2)
def closeRoot2(self):
#self.namVar.set('')
#self.altVar.set('')
self.root2.destroy()
self.root2.quit()
def adHum(self):
if self.controller:
self.controller.newHum(self.namVar.get(),self.altVar.get()) # get()'s sind leer!! Warum
def rootDelHum(self):
self.root3=Tk()
nL = ttk.Label(self.root3,text='Name')
nL.grid(row=1,column=1)
ent = ttk.Entry(self.root3,textvariable=self.delNam)
ent.grid(row=1,column=2)
but = ttk.Button(self.root3,text='Löschen',command=self.delHum)
but.grid(row=2,column=1)
abb = ttk.Button(self.root3,text='Abbruch',command=self.closeRoot3)
abb.grid(row=2,column=2)
def delHum(self):
print('löscht'+self.delNam.get()) # gibt nur 'löscht' zurück
if self.controller:
self.controller.delHum(self.delNam.get())
self.closeRoot3()
def closeRoot3(self):
self.root3.destroy()
self.root3.quit()
def setController(self,controller):
self.controller = controller
def shAdHum(self,name):
tkinter.messagebox.showinfo('EinfügenInfo',f'Person {name} wurde hinzugefügt') # messageBox
self.closeRoot2()
def shDelHum(self,name):
tkinter.messagebox.showinfo('LöschenInfo',name) #
def shHumList(self,humList):
for i, hum in enumerate(humList):
print(f'{i+1}. {hum}') # window
def emptyHL(self):
print('Liste leer!!!-Kein Personenen eingetragen-') #
tkinter.messagebox.showinfo('LeereListe','Kein Personenen eingetragen') #
def shHum(self,name,humList):
filterHum = [hum for hum in humList if hum['name']==name]
if filterHum != []:
for i, hum in enumerate(filterHum):
print(f'{filterHum[i]}')
else:
self.noHum(name)
def noHum(self,name):
print(f'Person {name} nicht in der Liste vorhanden #FromSelf')
tkinter.messagebox.showinfo('KeinePerson',f'Person {name} nicht in der Liste vorhanden')#