[Python] object is not callable

Nemesis

Nemesis

N3RD
Hi,

ich möchte in Phyton ein Fenster erzeugen, auf dem ich dann berechnette Daten anzeigen lassen möchte.

jetzt krieg ich aber ner fehlermeldung und weiss nicht warum:
Code:
 File "Projects/python-foobar/src/python_foobar.py", line 20, in __init__
    self.canvas = Canvas(Fenster, relief = RIDGE, bd = 2, bg = "white", width = 300, height = 300)
TypeError: 'module' object is not callable

der Code lautet:
Code:
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

from Tkinter import *
import Canvas
import math				# für die Sinus- und Kosinus-Funktionen
import sys				# für sys.exit(0)		
from Tkconstants import *

	
class Butterfly:
 	
	def __init__(self, master=None):
		
		Fenster=Tk()

		self.label_instanz=Label(Fenster, text="Zeichnung")
		self.label_instanz.pack()
		
[COLOR="Red"]		self.canvas = Canvas(Fenster, relief = RIDGE, bd = 2, bg = "white", width = 300, height = 300)[/COLOR]
		self.canvas.pack(expand=YES, fill=BOTH)
		
		self.button = Button(Fenster, text ="Start", command = draw)
		self.button.pack(side = BOTTOM, pady = 4)

warum sagt er mir da, dass Canvas nicht aufgerufen werden kann ?

danke!
 
Hi,

ich kenne die Lib nicht die du da benutzen willst, aber Canvas ist, so wie es da auch steht, ein Modul, und nicht aufrufbar. Ich vermute du meinst Canvas.Canvas oder so?
Im uebrigen ist es schlechter Stil 'from foo import *' zu benutzen. In diesem Fall sorgt es, wie so oft, dafuer dass nicht klar ist was was ist.

mfg,
bytepool
 
Im uebrigen ist es schlechter Stil 'from foo import *' zu benutzen. In diesem Fall sorgt es, wie so oft, dafuer dass nicht klar ist was was ist.
wie handelt man dann das import "besser" ? import TKinter ?
das mit dem canvas habe ich vvon seiten wie z.b. LINK, dort wird es auch so verwendet.

tante edit sagt:
wenn ich canvas nicht importiere, dann gehts.
 
Zuletzt bearbeitet:
Hi,
wie handelt man dann das import "besser" ? import TKinter ?
richtig, und dann entweder mit dem vollen Import Namen arbeiten, oder mit 'as' oder lokalen Variablen. Wenn du z.B. Canvas von TKinter haben willst, waere 'from TKinter import Canvas' angemessener.
Mit expliziten imports gibt es nie Zweifel woher eine Variable eigentlich gerade kommt, was den Code deutlich lesbarer und verstaendlicher macht.

das mit dem canvas habe ich vvon seiten wie z.b. LINK, dort wird es auch so verwendet.
Ich sagte auch nicht dass es unueblich ist, sondern dass es schlechter Stil ist. ;)
Dass es ohne Ende Tutorials mit schlechtem Stil gibt sollte hoffentlich keine Ueberraschung sein.

mfg,
bytepool
 

Ähnliche Themen

Conky Problem

Zurück
Oben