Anfängerfragen
- DeKugelschieber
- User
- Beiträge: 82
- Registriert: Sonntag 28. Februar 2010, 12:23
- Kontaktdaten:
"Ziehlleistenobjekte" also scrollbars? Ich würde das ganze jetzt in ein label oder noch besser frame packen und eine scrollbar dranhauen.
MfG DeKugelschieber
- DeKugelschieber
- User
- Beiträge: 82
- Registriert: Sonntag 28. Februar 2010, 12:23
- Kontaktdaten:
Gut, ich schreib jetzt erstmal die Speicherfunktionen zu ende
Jetzt mit Speicherfunktion: http://paste.pocoo.org/show/184830/
Gibt es eine Möglichkeit Python 3.1 in eine exe umzuwandeln oder muss ich da noch warten?
EDIT: So siehts jetzt übrigens aus:
Jetzt mit Speicherfunktion: http://paste.pocoo.org/show/184830/
Gibt es eine Möglichkeit Python 3.1 in eine exe umzuwandeln oder muss ich da noch warten?
EDIT: So siehts jetzt übrigens aus:
MfG DeKugelschieber
- DeKugelschieber
- User
- Beiträge: 82
- Registriert: Sonntag 28. Februar 2010, 12:23
- Kontaktdaten:
1) check ich nicht^^
2)
2)
Code: Alles auswählen
self.window.iconbitmap(default = 'graphics/icon.ico') # Fenstericon
MfG DeKugelschieber
@De Kugelschreiber
1)Also meine ich so was:
Button1 = Button(text="blabla", command = function1())
jedoch soll function1() nicht in der selben klasse liegen sondern in einer anderen, u.a. auch in einem anderen package...
1)Also meine ich so was:
Button1 = Button(text="blabla", command = function1())
jedoch soll function1() nicht in der selben klasse liegen sondern in einer anderen, u.a. auch in einem anderen package...
@OpenCV: Ad 1) Du hast doch sicher schon einmal eine Funktion oder Methode aufgerufen die in einem Package, einem Modul, oder generell einem Objekt lag!? Genau so funktioniert das hier auch. Wo ist das Problem?
Wobei Du etwas unvorsichtig mit dem Wort Klasse umgehst, denn hier meinst Du sicher ein Exemplar. Es sei denn es ist eine Klassenmethode oder eine statische Methode.
Wobei Du etwas unvorsichtig mit dem Wort Klasse umgehst, denn hier meinst Du sicher ein Exemplar. Es sei denn es ist eine Klassenmethode oder eine statische Methode.
- DeKugelschieber
- User
- Beiträge: 82
- Registriert: Sonntag 28. Februar 2010, 12:23
- Kontaktdaten:
jo deshalb verseh ich nicht ganz was er/sie will
MfG DeKugelschieber
Hallo,
ich hab mal den Code soweit es geht runtergebrochen,
worum es mir geht ist, das widget: text_01 ausserhalb der init funktion
zu aendern, zum Beispiel um einen File zu laden oder den Text zu bearbeiten.
Was ich in vielen Tutorials finde ist halt das Standard-Beispiel mit der insert Funktion,
welches mir aber leider nicht so richtig hilft.
als Fehlermeldung bekomme ich zur Zeit:
Exception in Tkinter callback
Traceback (most recent call last):
File "/soft/python/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1410, in __call__
return self.func(*args)
File "./class_01.py", line 10, in strip_file
self.text_01.insert(END,"test text")
AttributeError: my_application_class instance has no attribute 'text_01'
was fuer mich bedeutet, dass ich text_01 so nicht bearbeiten kann sondern
ueber irgendeine Zuweisung gehen muss?
self.text_01 = ....
aber wie setzt man das auf?
einige Varianten die alle nicht funktionieren:
self.master.text_01.insert(END,"test")
self.text_01 = self.master.insert(END,"test")
kann mir da jemand helfen, wie ich in der Funktion:
strip_file
das text widget manipulieren kann?
ich hab mal den Code soweit es geht runtergebrochen,
worum es mir geht ist, das widget: text_01 ausserhalb der init funktion
zu aendern, zum Beispiel um einen File zu laden oder den Text zu bearbeiten.
Was ich in vielen Tutorials finde ist halt das Standard-Beispiel mit der insert Funktion,
welches mir aber leider nicht so richtig hilft.
als Fehlermeldung bekomme ich zur Zeit:
Exception in Tkinter callback
Traceback (most recent call last):
File "/soft/python/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1410, in __call__
return self.func(*args)
File "./class_01.py", line 10, in strip_file
self.text_01.insert(END,"test text")
AttributeError: my_application_class instance has no attribute 'text_01'
was fuer mich bedeutet, dass ich text_01 so nicht bearbeiten kann sondern
ueber irgendeine Zuweisung gehen muss?
self.text_01 = ....
aber wie setzt man das auf?
einige Varianten die alle nicht funktionieren:
self.master.text_01.insert(END,"test")
self.text_01 = self.master.insert(END,"test")
kann mir da jemand helfen, wie ich in der Funktion:
strip_file
das text widget manipulieren kann?
Code: Alles auswählen
#!/usr/bin/env python
from Tkinter import *
class my_application_class:
def strip_file(self, *args):
self.text_01.insert(END,"test text")
def __init__(self, master):
# frame_01 definition
frame_01 = Frame(master)
text_01 = Text(frame_01)
text_01.pack()
frame_01.pack()
# frame_02 definition
frame_02 = Frame(master)
button_01 = Button(frame_02,command = self.strip_file)
button_01.pack()
frame_02.pack()
root = Tk()
display = my_application_class(root)
root.mainloop()
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das `text_01` ist momentan lokal zur Funktion, danach ist es nicht mehr gebunden. Also binde es (in `__init__` !) genau so, wie du danach auch darauf zugreifen willst.
Darueber hinaus:
1) Bitte recycle keine Threads fuer andere Probleme.
2) Sternimporte, gerade bei grossen Paketen wie Tkinter sollte man vermeiden.
3) in Python 2.x sollte man von `object` erben.
4) Du solltest mal PEP8 lesen.
Darueber hinaus:
1) Bitte recycle keine Threads fuer andere Probleme.
2) Sternimporte, gerade bei grossen Paketen wie Tkinter sollte man vermeiden.
3) in Python 2.x sollte man von `object` erben.
4) Du solltest mal PEP8 lesen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo cofi,
thanks for this fast answer!
kannst du mir eine Beispielzeile geben, wie ich es in __init__ auf die Art und Weise binde?
Wie meinst du das, "text_01" ist momentan lokal zu Funktion?
zu den anderen Punkten:
1) ich dachte, da der Thread: Anfaengerprobleme heisst, kann ich hier schreiben, wollte
mir nicht anmassen einen neuen Thread aufzumachen
2) meinst du mit Sternimport das *args in der Argumentliste ? Das hab ich nur aus lauter
Verzweiflung mit ruebergenommen um zu checken was dort ankommt.
3) kannst du das naeher erklaeren?
4) PEP8 muss ich mich erst informieren, was das ist, werd ich aber tun,
Vielen Dank im voraus
thanks for this fast answer!
kannst du mir eine Beispielzeile geben, wie ich es in __init__ auf die Art und Weise binde?
Wie meinst du das, "text_01" ist momentan lokal zu Funktion?
zu den anderen Punkten:
1) ich dachte, da der Thread: Anfaengerprobleme heisst, kann ich hier schreiben, wollte
mir nicht anmassen einen neuen Thread aufzumachen
2) meinst du mit Sternimport das *args in der Argumentliste ? Das hab ich nur aus lauter
Verzweiflung mit ruebergenommen um zu checken was dort ankommt.
3) kannst du das naeher erklaeren?
4) PEP8 muss ich mich erst informieren, was das ist, werd ich aber tun,
Vielen Dank im voraus
Zum Thema "text_01" ist lokal zur Funktion ist mir noch eingefallen:
Wieso lokal zur Funktion, ich definiere doch in der init Funktion text_01
und diese sollte doch somit in allen anderen Methoden der Klasse
bekannt sein. Somit auch in strip_file(self) welche ja dazugehoert.
Vielen Dank
Wieso lokal zur Funktion, ich definiere doch in der init Funktion text_01
und diese sollte doch somit in allen anderen Methoden der Klasse
bekannt sein. Somit auch in strip_file(self) welche ja dazugehoert.
Vielen Dank
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein, `text_01` ist ein lokaler Name der Funktion `__init__`.
Wenn du den Namen in der Klassendefinition (ausserhalb der Methoden) bindest, hast du eine Klassenvariable, lokal zur Klasse und global fuer alle Instanzen.
Bindest du den Namen aber so `self.text_01 = tk.Frame(master)`, machst du sie zur Instanzvariable und andere Methoden koennen darauf zugreifen.
Ad 1) Doch, tu das ruhig, das Forum wird wohl nicht als Buch herauskommen, dass wir mit Platzproblemen zu tun haetten.
Ad 2) Nein, ich meine SternchenIMPORTE, d.h. `from Tkinter import *`, `import Tkinter as tk` ist ein recht haeufig benutztes Mittel um die Namen kurz zu halten.
Ad 3) Ja, aber das fuehrt hier ein wenig zu weit, die Stichworte sind `new-style classes` und `classic/old-style classes`. Im Forum oder in der Python-Dokumentation wird man dazu fuendig. Die Kurzform ist: Es schadet nichts von `object` zu erben, aber man bekommt Features frei Haus.
Ad 4) Siehe Signatur oder [pep]8[/pep]
Wenn du den Namen in der Klassendefinition (ausserhalb der Methoden) bindest, hast du eine Klassenvariable, lokal zur Klasse und global fuer alle Instanzen.
Bindest du den Namen aber so `self.text_01 = tk.Frame(master)`, machst du sie zur Instanzvariable und andere Methoden koennen darauf zugreifen.
Ad 1) Doch, tu das ruhig, das Forum wird wohl nicht als Buch herauskommen, dass wir mit Platzproblemen zu tun haetten.
Ad 2) Nein, ich meine SternchenIMPORTE, d.h. `from Tkinter import *`, `import Tkinter as tk` ist ein recht haeufig benutztes Mittel um die Namen kurz zu halten.
Ad 3) Ja, aber das fuehrt hier ein wenig zu weit, die Stichworte sind `new-style classes` und `classic/old-style classes`. Im Forum oder in der Python-Dokumentation wird man dazu fuendig. Die Kurzform ist: Es schadet nichts von `object` zu erben, aber man bekommt Features frei Haus.
Ad 4) Siehe Signatur oder [pep]8[/pep]
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo cofi,
vielen Dank fuer die Antwort, dass muss ich mir erst mal auf
der Zunge zergehen lassen, da ich noch nicht ganz fit bin bzgl.
der objektorientierten Fachtermini, wenn ich das mal so sagen darf.
das komische an der Sache ist halt auch, wenn ich in der
Funktion strip_file eine Zuweisung probiert habe, so etwas in der Art
wie:
self.text_01 = ""
dann hat er es geschluckt, es ist zwar nix passiert, aber es kam auch
keine Fehlermeldung. Nun dachte ich mir deshalb, er muss es irgendwie
kennen...
bzgl. deines letzten Postings werde ich mal etwas probieren und bei
Rueckfragen spontan einen neuen Thread aufmachen und unsere
bisherige History einfuegen, wenn das ok so ist,
bis spaeter
vielen Dank fuer die Antwort, dass muss ich mir erst mal auf
der Zunge zergehen lassen, da ich noch nicht ganz fit bin bzgl.
der objektorientierten Fachtermini, wenn ich das mal so sagen darf.
das komische an der Sache ist halt auch, wenn ich in der
Funktion strip_file eine Zuweisung probiert habe, so etwas in der Art
wie:
self.text_01 = ""
dann hat er es geschluckt, es ist zwar nix passiert, aber es kam auch
keine Fehlermeldung. Nun dachte ich mir deshalb, er muss es irgendwie
kennen...
bzgl. deines letzten Postings werde ich mal etwas probieren und bei
Rueckfragen spontan einen neuen Thread aufmachen und unsere
bisherige History einfuegen, wenn das ok so ist,
bis spaeter
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein, `self.text_01` muss nicht bekannt sein, damit die Zuweisung funktioniert, immerhin ueberschreibst du damit ja, was ggf. vorher dort war.ts7343 hat geschrieben:das komische an der Sache ist halt auch, wenn ich in der
Funktion strip_file eine Zuweisung probiert habe, so etwas in der Art
wie:
self.text_01 = ""
dann hat er es geschluckt, es ist zwar nix passiert, aber es kam auch
keine Fehlermeldung. Nun dachte ich mir deshalb, er muss es irgendwie
kennen...
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo,
du schreibst:
self.text_01 = tk.Frame(master)
1)
benutzt du hierbei import Tkinter as tk ?
2)
woher weiss bei dieser Anweisung self.text_01 dass es ein textwidget ist?
3)
wo kommt diese Anweisung in die init function?
ich hoffe die Fragen sind nicht zu bloed.
thanks
du schreibst:
self.text_01 = tk.Frame(master)
1)
benutzt du hierbei import Tkinter as tk ?
2)
woher weiss bei dieser Anweisung self.text_01 dass es ein textwidget ist?
3)
wo kommt diese Anweisung in die init function?
ich hoffe die Fragen sind nicht zu bloed.
thanks
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ad 1) Ja.
Ad 2) Das weiss das Objekt, nicht der Name (und schon gar nicht die Anweisung).
Ad 2) Das weiss das Objekt, nicht der Name (und schon gar nicht die Anweisung).
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
class MyApplication(object):
def strip_file(self, *args):
self.text_00.insert(END,"test text")
def __init__(self, master):
frame_01 = tk.Frame(master)
self.text_01 = tk.Text(frame_01)
text_01.pack()
frame_01.pack()
frame_02 = tk.Frame(master)
button_01 = tk.Button(frame_02,command = self.strip_file)
button_00.pack()
frame_02.pack()
if __name__ == "__main__":
root = tk.Tk()
display = MyApplication(root)
root.mainloop()
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo cofi,
vielen Dank fuer deine Code, mit ein paar kleinen Aenderungen hat es
funktioniert, (vor beiden widgets, text und button jeweils ein self),
fuer mich hab ich das erst mal so abgespeichert, dass ich mit der
Definition:
self.text_01 = tk.Text(frame_01)
erst eine Methode definiere, und nur so kann ich ausserhalb auf
diese Methode zugreifen. Ist das so richtig formuliert?
Das mit dem tk gefaellt mir besser, ist irgendwie ordentlicher.
Ob man von object vererbt oder nicht, scheint hier nicht die Rolle
zu spielen, ist das syntaktisch richtiger oder warum macht man das?
class MyApp(object): vs. class MyApp():
Thanx!
vielen Dank fuer deine Code, mit ein paar kleinen Aenderungen hat es
funktioniert, (vor beiden widgets, text und button jeweils ein self),
fuer mich hab ich das erst mal so abgespeichert, dass ich mit der
Definition:
self.text_01 = tk.Text(frame_01)
erst eine Methode definiere, und nur so kann ich ausserhalb auf
diese Methode zugreifen. Ist das so richtig formuliert?
Das mit dem tk gefaellt mir besser, ist irgendwie ordentlicher.
Ob man von object vererbt oder nicht, scheint hier nicht die Rolle
zu spielen, ist das syntaktisch richtiger oder warum macht man das?
class MyApp(object): vs. class MyApp():
Thanx!
Hallo,
jetzt hab ich quasi ganz diszipliniert die neuen Richtlinien in meinen
original Code uebernommen, aber bekomme nun bei mehreren
Widgets Probleme in der Definition.
einige Beispiele waeren:
relief = RIDGE bei der frame definition
orient = VERTICAL bei einer scrollbar definition
selectmode = SINGLE bei einer listbox definition
das war davor alles kein Problem. Komischerweise vertraegt er
zum Beispiel die Eigenschaften: background, width und heigth
beim frame.
Weiterhin versteht er zum Beispiel das keyword: END nicht mehr,
welches ich bei:
self.text_01.insert(END,text_list)
verwende, jedoch "0.0" anstatt "END" funktioniert.
Nun bin ich etwas durcheinander, und es scheint mit dem import
zu tun haben:
import Tkinter as tk
Wie kann man das erklaeren und wie muss ich da reagieren,
dass er die keywords wieder erkennt?
Hier mal ein abgespecktes Beispiel, wo er stirbt bei:
frame_01 = tk.Frame(master, relief=RIDGE)
und wenn man das korrigiert stirbt er bei:
self.text_01.insert(END,text_list)
jetzt hab ich quasi ganz diszipliniert die neuen Richtlinien in meinen
original Code uebernommen, aber bekomme nun bei mehreren
Widgets Probleme in der Definition.
einige Beispiele waeren:
relief = RIDGE bei der frame definition
orient = VERTICAL bei einer scrollbar definition
selectmode = SINGLE bei einer listbox definition
das war davor alles kein Problem. Komischerweise vertraegt er
zum Beispiel die Eigenschaften: background, width und heigth
beim frame.
Weiterhin versteht er zum Beispiel das keyword: END nicht mehr,
welches ich bei:
self.text_01.insert(END,text_list)
verwende, jedoch "0.0" anstatt "END" funktioniert.
Nun bin ich etwas durcheinander, und es scheint mit dem import
zu tun haben:
import Tkinter as tk
Wie kann man das erklaeren und wie muss ich da reagieren,
dass er die keywords wieder erkennt?
Hier mal ein abgespecktes Beispiel, wo er stirbt bei:
frame_01 = tk.Frame(master, relief=RIDGE)
und wenn man das korrigiert stirbt er bei:
self.text_01.insert(END,text_list)
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
class MyApplication(object):
def strip_file(self):
text_list=[]
text_list.append("line_01 \n")
self.text_01.insert(END,text_list)
def __init__(self, master):
frame_01 = tk.Frame(master, relief=RIDGE)
self.text_01 = tk.Text(frame_01)
self.text_01.pack()
frame_01.pack()
frame_02 = tk.Frame(master)
self.button_01 = tk.Button(frame_02,command = self.strip_file)
self.button_01.pack()
frame_02.pack()
if __name__ == "__main__":
root = tk.Tk()
display = MyApplication(root)
root.mainloop()