Hilfe habe ein Problem mit ScrolledText

Fragen zu Tkinter.
Antworten
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Ich habe ein Problem mit ScrolledText.
Python gibt mir folgende Fehlermeldung aus:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1414, in __call__
    return self.func(*args)
TypeError: Help() takes exactly 1 argument (0 given)
--------------------------------------------------------------------------------------


Ich habe hier den ausschnitt aus dem Programm

Code: Alles auswählen

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

import Tkinter
import tkMessageBox                                                    
from Tkinter import *


root=Tkinter.Tk()
root.title("test")
root.config(bg = "#E3E2E9")


    
    
def Help(self): 
    
    root = Tk()
    root.title('Help')
    ScrolledText(root, text='blabla\nblabla')   
         
    root.mainloop() 
########################################################                  

#Menue


menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)

filemenue = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=filemenue)
filemenue.add_command(label="Exit", command=exit)



helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="Help Index", command=Help)


root.config(menu=menubar)
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Nimm das "self" bei Help raus, das hat dort nichts verloren.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Dann kommt die Fehlermeldung:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1414, in __call__
    return self.func(*args)
  File "J:\JT_proj\python\wetterprog\wettera.py", line 20, in Help
    ScrolledText(root, text='blabla\nblabla')
NameError: global name 'ScrolledText' is not defined
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
BlackJack

@jtschoch: Das könnte daran liegen das `ScrolledText` nicht definiert ist. Sagt die Meldung ja auch. Die Python-Dokumentation zur Standardbibliothek hat einen Index. Suche da mal nach `ScrolledText` -- dann erfährst Du in welchem Modul das definiert ist.

Edit: Von `Tk` darfst Du in einem Programm nur *ein* Exemplar erstellen. Das ist *das* Hauptfenster. Wenn es davon mehrere gibt, ist das Verhalten der GUI nicht mehr definiert. Wenn Du zusätzliche Fenster brauchst, dann musst Du dafür `Toplevel`-Exemplare nehmen.
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

danke
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Das steht da drin

Availability: Tk.

The ScrolledText module provides a class of the same name which implements a basic text widget which has a vertical scroll bar configured to do the ``right thing.'' Using the ScrolledText class is a lot easier than setting up a text widget and scroll bar directly. The constructor is the same as that of the Tkinter.Text class.

The text widget and scrollbar are packed together in a Frame, and the methods of the Grid and Pack geometry managers are acquired from the Frame object. This allows the ScrolledText widget to be used directly to achieve most normal geometry management behavior.

Should more specific control be necessary, the following attributes are available:


frame
The frame which surrounds the text and scroll bar widgets.

vbar
The scroll bar widget.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

und jetzt?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Na, importieren. Die ScrolledText Klasse steht im Modul "ScrolledText", also importiere die Klasse so, das sie in deinem Modul verfügbar ist.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

import ScrolledText
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1414, in __call__
    return self.func(*args)
  File "J:\JT_proj\python\meinname.py", line 39, in Help
    ScrolledText(root, text='blablabla')
TypeError: 'module' object is not callable
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Hast du dich schon mal mit Python beschäftigt?! bzw. schonmal mit irgendeiner anderen Programmiersprache?

Die Klasse ist in dem Modul was zufällig den selben Namen trägt, zugegeben nicht ganz glücklich gewählt, aber dennoch sollte man das ohne weiteres hinbekommen. Wenn nicht gibt es ein gutes Nachschlagewerk, wo man das in spätestens 5 min rausbekommt.

Edit: und hör auf mir andauernd PNs zuschicken wo exakt das selbe drin steh, wie das was du hier postest.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

ich habe mich blos noch nicht mit Tkinker beschäftigt
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

kann mal jemand die code schreiben? - ich kapiere es nicht :oops:
(richtig)

Code: Alles auswählen

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

import Tkinter
import tkMessageBox                                                    
from Tkinter import *


root=Tkinter.Tk()
root.title("test")
root.config(bg = "#E3E2E9")


    
    
def Help(): 
    
    root = Tk()
    root.title('Help')
    ScrolledText(root, text='blabla\nblabla')   
         
    root.mainloop() 
########################################################                  

#Menue


menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)

filemenue = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=filemenue)
filemenue.add_command(label="Exit", command=exit)



helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="Help Index", command=Help)


root.config(menu=menubar)

Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wieso postest du diesen Quelltext schon wieder, meinst du davon wird das Problem besser? (Tipps zu diesem wurden dir von BlackJack auch schon gegeben, die du noch nicht umgesetzt hast)

Du musst einfach nur "von Modul importiere Klasse" oben hinschreiben, was ist denn daran so schwer, wenn du nicht mal das beherschst solltest du vieleicht mal das Python Tutorial durcharbeiten.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

aber was ist eine importiere Klasse

so

Code: Alles auswählen

from ScrolledText import *
[/size]
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ja so würde es gehen, nur so importierst du alles aus dem Modul - was man besser vermeiden sollte, da es einem den Namesraum im eigenen Modul vollstopft. Gilt übrigens auch für dein Tkinter import. Üblich wäre

Code: Alles auswählen

from ScrolledText import ScrolledText
oder

Code: Alles auswählen

import ScrolledText
ScrolledText.ScrolledText(root, ...)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

so hab ich es gemacht nur er hat mit der Option Text was zu mekkern

Code: Alles auswählen

def Help(): 
    
    root = Tk()
    root.title('Help')
    ScrolledText.ScrolledText(root, text = 'blablabla\nblablabla')            
    root.mainloop()

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1414, in __call__
    return self.func(*args)
  File "\\Home\jonas\JT_proj\python\blabla.py", line 41, in Help
    ScrolledText.ScrolledText(root, text = 'blablabla\nblablabla')
  File "C:\Python25\lib\lib-tk\ScrolledText.py", line 31, in __init__
    Text.__init__(self, self.frame, **cnf)
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 2852, in __init__
    Widget.__init__(self, master, 'text', cnf, kw)
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1942, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
TclError: unknown option "-text"

TclError: unknown option "-text"
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
deets

Die Fehlermeldung ist doch sehr klar. Es gibt keinen Parameter "text". Wie kommst du da drauf, dass es den geben koennte? In der Dokumentation steht jedenfalls nichts davon:

http://www.pythonware.com/library/tkint ... ptions.htm

Aber da gibt's auch die Patterns, und da steht, wie's gemacht wird:

http://www.pythonware.com/library/tkint ... tterns.htm
Antworten