Python 3 "Item 1" doesn't exist
Verfasst: Dienstag 2. Juli 2019, 12:29
Also ich hab mal angefangen in Python zu programmieren und wollte dass mir an bestimmten Positionen Rechtecke angezeigt werden mit MAC-Adressen und und dem Status erstmal gleichzeitig auch mit der Maus verschiebbar aber sobald ich das machen will gibt er mir den Error Item "1" doesnt exist wenn ich das Rechteck und den Text nur anzeigen will gehts kann mir da jemand helfen oder Tipps geben hier der code:
Code: Alles auswählen
import tkinter as tk
from tkinter import *
def Button_action():
fenster = Tk()
fenster.geometry("650x350")
fenster.title("Auswahl")
# Ausgabe Der Gewünschten Informationen
my_label = Label(fenster, text="Wähle die Gewünschte Information aus.")
Mac_ausgabe_Label = Label(fenster, text=mac)
Status_ausgabe_Label = Label(fenster, text=status)
Ip_ausgabe_Label = Label(fenster, text=ip)
Name_ausgabe_Label = Label(fenster, text=name)
PosX_ausgabe_Label = Label(fenster, text=posx)
PosY_ausgabe_Label = Label(fenster, text=posy)
Farbe_ausgebe_Label = Label(fenster, text=farbe)
SwitchPort_ausgabe_Label = Label(fenster, text=switchPort)
#Button zum ändern der Werte
def Button_SwitchPort():
switchPort = eingabefeld_switchPort.get()
def Button_Farbe():
farbe = eingabefeld_farbe.get()
def Button_PosY():
posy = eingabefeld_posy.get()
def Button_PosX():
posx = eingabefeld_posx.get()
def Button_Name():
name = eingabefeld_name.get()
def Button_Ip():
ip = eingabefeld_ip.get()
def Button_Status():
status = eingabefeld_status.get()
def Button_Mac():
mac = eingabefeld_mac.get()
#Hier kann der Benutzer eine Eingabe machen
eingabefeld_mac = Entry(fenster, bd=5, width=40)
eingabefeld_status = Entry(fenster, bd=5, width=40)
eingabefeld_ip = Entry(fenster, bd=5, width=40)
eingabefeld_name = Entry(fenster, bd=5, width=40)
eingabefeld_posx = Entry(fenster, bd=5, width=40)
eingabefeld_posy = Entry(fenster, bd=5, width=40)
eingabefeld_farbe = Entry(fenster, bd=5, width=40)
eingabefeld_switchPort = Entry(fenster, bd=5, width=40)
#Platzzuweisungen/Größenzuweisungen
my_label.grid(row=0, column=2)
Mac_Button = Button(fenster, text="Mac-Adressen", width = '12', height = '1', command=Button_Mac)
Mac_Button.grid(row=1,column=1)
Mac_ausgabe_Label.grid(row=1, column=2)
eingabefeld_mac.grid(row=1, column=3)
Status_Button = Button(fenster, text="Status", width = '6', height = '1', command=Button_Status)
Status_Button.grid(row=2,column=1)
Status_ausgabe_Label.grid(row=2, column=2)
eingabefeld_status.grid(row=2, column=3)
Ip_Button = Button(fenster, text="Ip", width = '2', height = '1', command=Button_Ip)
Ip_Button.grid(row=3,column=1)
Ip_ausgabe_Label.grid(row=3, column=2)
eingabefeld_ip.grid(row=3, column=3)
Name_Button = Button(fenster, text="Name", width = '4', height = '1', command=Button_Name)
Name_Button.grid(row=4,column=1)
Name_ausgabe_Label.grid(row=4, column=2)
eingabefeld_name.grid(row=4, column=3)
Posx_Button = Button(fenster, text="PosX", width = '4', height = '1', command=Button_PosX)
Posx_Button.grid(row=5,column=1)
PosX_ausgabe_Label.grid(row=5, column=2)
eingabefeld_posx.grid(row=5, column=3)
Posy_Button = Button(fenster, text="PosY", width = '4', height = '1', command=Button_PosY)
Posy_Button.grid(row=6,column=1)
PosY_ausgabe_Label.grid(row=6, column=2)
eingabefeld_posy.grid(row=6, column=3)
Farbe_Button = Button(fenster, text="Farbe", width = '5', height = '1', command=Button_Farbe)
Farbe_Button.grid(row=7,column=1)
Farbe_ausgebe_Label.grid(row=7, column=2)
eingabefeld_farbe.grid(row=7, column=3)
SwitchPort_Button = Button(fenster, text="SwitchPort", width = '9', height = '1', command=Button_SwitchPort)
SwitchPort_Button.grid(row=8,column=1)
SwitchPort_ausgabe_Label.grid(row=8, column=2)
eingabefeld_switchPort.grid(row=8, column=3)
def mouse_button1(mouse,object):
"""Maus fasst das Grafik-Objekt"""
cv.drag_drop_flag = True
tags = cv.gettags(object)
if tags != ():
object = tags[0]
#~~ Hebt das selektierte Objekt über die anderen
cv.tag_raise(object,None)
#~~ Drag-Koordinaten
cv.mouse_x = mouse.x
cv.mouse_y = mouse.y
print(cv.mouse_x,cv.mouse_y)
def mouse_release1():
"""Maus lässt Grafik-Objekte fallen"""
cv.drag_drop_flag = False
def mouse_move(mouse,object):
"""Maus bewegt dich über das Grafil-Objekt"""
tags = cv.gettags(object)
if tags != ():
object = tags[0]
if cv.drag_drop_flag == True:
# Ermittle den Koordinaten-offset
xoff = mouse.x - cv.mouse_x
yoff = mouse.y - cv.mouse_y
# verschiebe das Grafik Objekt
cv.move(object,xoff,yoff)
# Aktuelle Koordinaten
cv.mouse_x = mouse.x
cv.mouse_y = mouse.y
def mouse_enter(event):
"""Maus bewegt sich in das grafische Objekt"""
cv.temp_cursor = cv['cursor']
cv['cursor'] = 'hand1'
def mouse_leave(event):
"""Maus bewegt sich aus dem Grafischen Objekt"""
cv['cursor'] = cv.temp_cursor
def event_bindings(object):
"""Binde Mausereignisse an das Grafik-Objekt"""
# Event für linke Maustaste
cv.tag_bind(object,"<Button-1>", lambda e,obj=object:mouse_button1(e,obj))
# Event für loslassen der linken Maustaste
cv.tag_bind(object,"<ButtonRelease 1>", lambda e, obj=object:mouse_release1())
# Event für Mausbewegung
cv.tag_bind(object,"<Motion>", lambda e, obj=object:mouse_move(e,obj))
# Maus bewegt sich ins Grafik-Objekt
cv.tag_bind(object,"<Enter>", lambda e:mouse_enter(e))
# Maus bewegt sich aus dem Grafik-Objekt
cv.tag_bind(object, "<Leave>", lambda e:mouse_leave(e))
def Button_rechteck():
fenster = Tk()
cv = Canvas(fenster,height=500, width=500,bd=0,relief='raised',bg='#ffffff')
cv.pack()
#Folgende Variablen werden dem cv.objekt angehängt
cv.drag_drop_flag = False
cv.mouse_x = None
cv.mouse_y = None
def Button_rechteck():
fenster.title("Rechteck")
canvas_width = 500
canvas_height = 500
colours = ("#476042", "yellow")
master = Tk()
w = Canvas(master,
width=canvas_width,
height=canvas_height)
w.pack()
posx1 = posx[:]
posy1 = posy[:]
for i in range(len(posx)):
posx[i] = posx[i] +100
for i in range(len(posy)):
posy[i] = posy[i] +100
# das rechteck und das drag and drop mit der maus
rechteck = w.create_rectangle(posx[0], posy[0], posx1[0], posy1[0], fill=colours)
event_bindings(rechteck)
for i in range(len(posx1)):
posx1[i] = posx1[i] +50
for i in range(len(posy1)):
posy1[i] = posy1[i] +50
#die MAC Adresse die aus der liste angezeigt wird / verbinden mit dem rechteck
inhalt_a = w.create_text(posx1[0], posy1[0], text=mac[0])
#cv.addtag_withtag('rechteck', rechteck)
#cv.addtag_withtag('rechteck', inhalt_a)
for i in range(len(posx1)):
posx1[i] = posx1[i] -10
for i in range(len(posy1)):
posy1[i] = posy1[i] -10
#der status der mir angezeigt wird / verbinden mit dem rechteck
inhalt_b = w.create_text(posx1[0], posy1[0], text=status[0])
#cv.addtag_withtag('rechteck', rechteck)
#cv.addtag_withtag('rechteck', inhalt_b)
#Das erste Fenster dass sich öffnet
fenster = Tk()
fenster.geometry("1000x550")
fenster.title("Programm mit einem Menü")
#InfoText im Fenster
info_text = Label(fenster, text = "Ich habe ein Menü!\n\
Wenn du darauf Klickst geht ein Drop-Down-Menü auf.")
info_text.pack()
# Menüleiste erstellen
menuleiste = Menu(fenster)
#Menü Datei erstellen
datei_menu = Menu(menuleiste, tearoff=0)
datei_menu =Menu(menuleiste, tearoff=0)
# Beim Klick auf Datei sollen nun weitere Einträge erscheinen.
# Diese werden also zu "datei_menu" hinzugefügt.
datei_menu.add_command(label="Computer", command=Button_action)
datei_menu.add_separator() # Fügt eine Trennlinie hinzu
datei_menu.add_command(label="Rechteck", command=Button_rechteck)
datei_menu.add_separator()
datei_menu.add_command(label="Exit", command=fenster.quit)
# Nun fügen wir die Menüs (Datei) der Menüleiste
#als "Drop-down-Menü" hinzu
menuleiste.add_cascade(label="Computer", menu=datei_menu)
# Die Menüleiste mit den Menüeinrägen noch dem Fenster übergeben und fertig.
fenster.config(menu=menuleiste)
class Computer:
def __init__(self, mac, status, ip, name, posx, posy, farbe, switchPort):
self.__mac = mac
self.__status = status
self.__ip = ip
self.__name = name
self.__posx = posx
self.__posy = posy
self.__farbe = farbe
self.__switchPort = switchPort
def __GetMac(self):
return self.__mac
def __SetMac(self, mac):
self.__mac = mac
def __GetStatus(self):
return self.__status
def __SetStatus(self, status):
self.__status = status
def __GetIp(self):
return self.__ip
def __SetIp(self, ip):
self.__ip = ip
def __GetName(self):
return self.__name
def __SetName(selfname):
self.__name = name
def __GetPosX(self):
return self.__posx
def __SetPosX(self, posx):
self.__posx = posx
def __GetPosY(self):
return self.__posy
def __SetPosY(self, posy):
self.__posy = posy
def __GetFarbe(self):
return self.__farbe
def __SetFarbe(self, farbe):
self.__farbe = farbe
def __GetSwitchPort(self):
return self.__switchPort
def __SetSwitchPort(self, switchPort):
self.__switchPort = switchPort
mac = property(__GetMac, __SetMac)
status = property(__GetStatus, __SetStatus)
ip = property(__GetIp, __SetIp)
name = property(__GetName, __SetName)
posx = property(__GetPosX, __SetPosX)
posy = property(__GetPosY, __SetPosY)
farbe = property(__GetFarbe, __SetFarbe)
switchPort = property(__GetSwitchPort, __SetSwitchPort)
if __name__ == "__main__":
mac = ['23:24:34:2E:22:1A', 'aa:bb:cc:dd:ee:ff']
status = ['ok', 'beschädigt']
ip = ['192.168.3.6', '192.168.9.9']
name = ['Koala', 'Kaninchen', 'Igel', 'Maus', 'Elefant']
posx = [30, 66]
posy = [50, 99]
farbe = ['Grün', 'Silber']
switchPort = ['der da daneben', 'der da drüben']
cv = Canvas(fenster,height=500, width=500,bd=0,relief='raised',bg='#ffffff')
fenster.mainloop()