Seite 1 von 1

Anfänger hat Probleme mit Bindings...

Verfasst: Freitag 19. Oktober 2007, 19:50
von Agroschim

Code: Alles auswählen

#! /usr/bin/python
# -*- coding: utf-8 -*-

from Tkinter import *

class App:
	def klick(event):
		textfenster.insert(END, abschnitt.curselection())

class GUI:
	def __init__(self, master):
		global textfenster
		global abschnitt
		
		frame = Frame(master)
		frame.pack()
		
		textfenster = Text(frame)
		textfenster.pack(side=RIGHT)
		
		abschnitt = Listbox(frame)
		for item in ['Vorgeschichte', 'Chronologie', 'Orte', 'Personen', 'Gegenstände']:
			abschnitt.insert(END, item)
		abschnitt.pack(side=LEFT, fill=Y, expand=1)
		abschnitt.bind('<1>', app.klick)

class Abenteuer:
	pass

root = Tk()
app = App()
gui = GUI(root)
root.mainloop()
Was mache ich falsch? Wie formuliere ich das Binding richtig, sodass er mir die Methode klick ausführt? Oder mache ich in der Formulierung der Klasse schon einen Fehler?

Verfasst: Freitag 19. Oktober 2007, 20:36
von BlackJack
Da macht Du so einiges falsch. Erstmal beim Vorstellen des Problems. Da hättest Du auch den Fehler mitteilen können (wenn man auf einen der Texte klickt):

Code: Alles auswählen

Traceback (most recent call last):
  File "lib-tk/Tkinter.py", line 1406, in __call__
    return self.func(*args)
TypeError: klick() takes exactly 1 argument (2 given)
Das ist doch schon mal eine ziemlich deutliche Meldung.

Du solltest den Sternchenimport und die ``global``-Anweisungen loswerden. Und vielleicht erst einmal Klassen/Objekte ohne GUI lernen. Die Grundlagen also. Es macht keinen Sinn etwas in Objekte zu kapseln, wenn am Ende doch alles über globale Namen abgewickelt wird.

Verfasst: Freitag 19. Oktober 2007, 21:47
von Agroschim
Ja, vielleicht. Mein Problem habe ich im übrigen alleine gelöst...

Aber was spricht dagegeben die GUI in einer Klasse zu verschachteln? Dinge wie das Menu werde ich nirgendwo anders benötigen.

Verfasst: Freitag 19. Oktober 2007, 22:16
von pyStyler
Agroschim hat geschrieben:Ja, vielleicht. Mein Problem habe ich im übrigen alleine gelöst...
es war aber auch nicht wirklich argschwer, nachdem dich BlackJack auf die fehlermeldung hingewiesen hat.
Agroschim hat geschrieben: Aber was spricht dagegeben die GUI in einer Klasse zu verschachteln? Dinge wie das Menu werde ich nirgendwo anders benötigen.
BlackJack hat geschrieben:Es macht keinen Sinn etwas in Objekte zu kapseln, wenn am Ende doch alles über globale Namen abgewickelt wird.

Verfasst: Freitag 19. Oktober 2007, 23:08
von Agroschim
Okay, dumme Fragen...

Verfasst: Freitag 19. Oktober 2007, 23:43
von BlackJack
Es spricht absolut nichts dagegen die GUI in einer Klasse zu kapseln, im Gegenteil. Nur tust Du das nicht.

Verfasst: Freitag 19. Oktober 2007, 23:46
von Agroschim
Schon klar, ich habs ganz rausgenommen. Ist gleich übersichtlicher...

Sagt mir lieber mal, wie ich dem jetzt beibringe auf Strg+V das Clipboard in mein Textfeld einzufügen... Kopieren geht ja ganz wunderbar.

Verfasst: Samstag 20. Oktober 2007, 10:17
von HWK
Das geht doch genauso wunderbar ohne irgendwelche Änderungen, zumindest bei mir auf Windows XP.
MfG
HWK

Verfasst: Samstag 20. Oktober 2007, 12:09
von schlangenbeschwörer
Ansonsten kann mans auch selbst einbauen. Mit der Forensuche solltest du einiges finden. Und in der Doku natürlich auch. :wink:

Verfasst: Sonntag 21. Oktober 2007, 15:14
von Agroschim
Letzteres versuche ich...