Anfänger hat Probleme mit Bindings...

Fragen zu Tkinter.
Antworten
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

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?
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.
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

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.
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

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.
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Okay, dumme Fragen...
BlackJack

Es spricht absolut nichts dagegen die GUI in einer Klasse zu kapseln, im Gegenteil. Nur tust Du das nicht.
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

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.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Das geht doch genauso wunderbar ohne irgendwelche Änderungen, zumindest bei mir auf Windows XP.
MfG
HWK
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Ansonsten kann mans auch selbst einbauen. Mit der Forensuche solltest du einiges finden. Und in der Doku natürlich auch. :wink:
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Letzteres versuche ich...
Antworten