Ich bin gerade dabei mich in Tkinter einzuarbeiten und wollte mir ein Programm schreiben, das ein primitives Zeichenprogramm imitiert. NUn bin ich dabei, die Funktion der Arbeitsbereichveränderung einzubauen. Dazu muss ich per Entry Widget die Möglichkeit geben Länge und Breite einzugeben.
Hier mein Code
Code: Alles auswählen
# -*- coding: cp1252 -*-
from math import *
from Tkinter import *
from random import *
root = Tk()
root.title(" Pinseln! 1.0! ")
#VARS
laenge=800
breite=300
#DAFS
def hello():
print("Hallo-oo!")
def linie():
xstart=randint(0,laenge)
ystart=randint(0,breite)
xende=randint(0,laenge)
yende=randint(0,breite)
liniebreite=randint(0,10)
Leinwand.create_line(xstart,ystart,xende,yende,width=liniebreite)
def nikolaushaus():
nikostartx=xstart=randint(0,laenge)
nikostarty=ystart=randint(0,breite)
liniebreite=randint(0,10)
Leinwand.create_line(width=liniebreite)
HIER WIRDS WICHTIG
#canvas ändern
def newcanvas():
laenge=Elaenge.get()
breite=Ebreite.get()
Leinwand.config(width=laenge, height=breite)
canvas.quit()
def canvaschange():
canvas=Tk()
canvas.title("Arbeitsbereich ändern")
Ebreite=Entry(canvas)
Ebreite.pack()
Elaenge=Entry(canvas)
Elaenge.pack()
bestaetigen=Button(canvas,text="Bestätigen", command=newcanvas)
bestaetigen.pack()
NUN WIRDS EIGENTLICH WIEDER EGAL
#CANVAS
Leinwand=Canvas(root, width=laenge, height=breite, bg="#333333")
Leinwand.grid(row=10,column=10)
#TOPMENU
topmenu=Menu(root)
#dateimenu
dateimenu=Menu(topmenu, tearoff=0)
dateimenu.add_command(label="Sag Hallo zu mir!", command=hello)
dateimenu.add_command(label="Arbeitsbereich ändern", command=canvaschange)
topmenu.add_cascade(label="Datei", menu=dateimenu)
#funktionsmenu
functionsmenu=Menu(topmenu, tearoff=0)
functionsmenu.add_command(label="Zeichne Linie", command=linie)
topmenu.add_cascade(label="Funktionen", menu=functionsmenu)
root.config(menu=topmenu)
root.mainloop()
Das Problem liegt in der Abfrage der Entryeinträge. Der Fehler ist folgender:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "E:\Informatik\pinseln1.0.py", line 33, in newcanvas
laenge=Elaenge.get()
NameError: global name 'Elaenge' is not defined
Ich weiß nicht so recht wo das Problem liegt. vllt kann mir jemand helfen.
mfg
Sans