Vorgabe bei raw_input

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Sonntag 4. April 2004, 09:00

Dankeschön der Code hat mir jetzt wirklich weitergeholfen. Ist echtnett von dir das du dir soviel Zeit genommen hast! :)

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Gast

Sonntag 4. April 2004, 14:09

So jetzt stellt sich mir ein neues Problem :
Ich möchte den Inhalt eines ganzen Textfensters in einer Datei speichern. Dazu habe ich folgenen Code geschrieben :

Code: Alles auswählen

# -*- coding: cp1252 -*-
from Tkinter import *

def newseingabe():
    nspeichern = Button(root, text="News speichern")
    nspeichern.pack(side=TOP)
    nspeichern.bind("<Button-1>", newsschreiben())
    font = ("Arial",10,"bold") #Fon   #Varialen
    frame = Frame(root) #Rahmen für eingabe
    frame.pack()
    lbleingabe = Label(frame) #Label der Eingabe
    lbleingabe.pack(side='left')
    feld =Text(root,width=200, height=180,bg="white") #Eingabefeld
    feld.pack(side="left")
    ausgabe = feld.get(1.0,END)
    oeffnen = open("news.txt", "w")
    oeffnen.write(feld.get(1.0,END))
    oeffnen.close()

    
def newsschreiben() :
    print 'blah'
    #ausgabe = feld.get(1.0,END)
    #oeffnen = open("news.txt", "
    #oeffnen.write(feld.get(1.0,END))
    #oeffnen.close()


#Programmstart
root = Tk()   #Hauptfenster
eingabe = StringVar()
root.title("CMS")
xpos = 10
ypos = 10
width = 600
height = 600
root.wm_geometry("%dx%d+%d+%d" % (width,height,xpos,ypos))

menubar = Menu(root)  #Menu
newsmenu=Menu(menubar)
newsmenu.add_command(label="Hinzufuegen", command=newseingabe)
root.config(menu=newsmenu)
frame=Frame(root,width=600)
frame.pack()
root.mainloop() #LOOP
In der Datei news.txt werden aber nur 2 Breaks gepsiechert. Woran kann das líegen? Kann ich sowas vielleicht nur mit savefile() machen?

Gruß Hanman[/code]
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Sonntag 4. April 2004, 15:18

Das "feld" enthält zu dem Zeitpunkt, an dem du Specherst noch gar keine Eingaben.
Du musst den Aufbau der GUI und die Aktionen die dann ausgeführt werden trennen. Für die Aktionen definiertst Du Funktionen oder Methoden, die dann an die Buttons und Entrywidgets mit "bind()" gebunden werden. Sobald dann der Anwender einen Button drückt oder eine Eingabe im Entry macht wird die Funktion ausgeführt. Bei Tkinter sind schon ein paar schöne Beispiele dabei, schau dir einfach mal den Sourcecode an von den Teilen, die für dich interessant sind.


Gruß

Dookie
Benutzeravatar
wuf
User
Beiträge: 1497
Registriert: Sonntag 8. Juni 2003, 09:50

Sonntag 4. April 2004, 16:48

Hallo Hanman

Hier ist dein leicht frisierter Code zum ausprobieren.
Jetzt sollte etwas in die Datei 'news.txt' geschrieben
werden, sofern Text ins Textfeld eingegeben wurde.
Wie du siehst braucht der Button nicht eine Bindung
<'Button-1'>, da der Button eine option 'command' besitzt
um bei seiner Aktivierung eine Funktion aufzurufen.
Das Objekt 'feld' für das Texteingabefeld muss mit der
Anweisung 'global' nach aussen bekannt gegeben werden,
da es in einer Funktion erzeugt wird. So hat auch die
Funktion 'newschreiben' Kenntnis über die Existenz des
Textfeldobjektes 'feld' die sie braucht um den Text aus
diesem Objekt zu lesen.

Code: Alles auswählen

# -*- coding: cp1252 -*-
from Tkinter import *

def newseingabe():
	global feld
	nspeichern = Button(root, text="News speichern",command=newsschreiben)
	nspeichern.pack(side=TOP)

	font = ("Arial",10,"bold") #Fon   #Varialen
	frame = Frame(root) #Rahmen für eingabe
	frame.pack()

	lbleingabe = Label(frame) #Label der Eingabe
	lbleingabe.pack(side='left')

	feld =Text(root,width=200, height=180,bg="white") #Eingabefeld
	feld.pack(side="left")
	feld.delete(0.0,END)

def newsschreiben() :
	print 'Text wird in Datei geschrieben'
	ausgabe = feld.get(1.0,END)
	oeffnen = open("news.txt","w")
	oeffnen.write(feld.get(1.0,END))
	oeffnen.close()

# Programmstart
root = Tk()    #Hauptfenster
eingabe = StringVar()
root.title("CMS")
xpos = 10
ypos = 10
width = 600
height = 600
root.wm_geometry("%dx%d+%d+%d" % (width,height,xpos,ypos))

menubar = Menu(root)  #Menu
newsmenu=Menu(menubar)
newsmenu.add_command(label="Hinzufuegen", command=newseingabe)
root.config(menu=newsmenu)
frame=Frame(root,width=600)
frame.pack()

root.mainloop() #LOOP
Gruss wuf :wink:
Take it easy Mates!
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Sonntag 4. April 2004, 19:59

Hallo,
ist wirklich nett von euch das ihr euch am Sonntag Abend soviel Zeit für mich nehmt! Danke. Besonders dein Code wuf hat mir weitergeholfen!
Ich hab jetzt das ganze nochmal geschrieben und alles beachtet was ihr beiden mir empfohlen habt :

Code: Alles auswählen

from Tkinter import *
from tkFileDialog import *

class CMS :
    
    def __init__(self) :
         
         #Fenster erstllen
         self.root = Tk()
         self.fenster = Frame
         self.root.title("CMS")
         self.xpos = 10
         self.ypos = 10
         self.width = 600
         self.height = 600
         self.root.wm_geometry("%dx%d+%d+%d" % (self.width,self.height,self.xpos,self.ypos))
         #Menu erstellen
         self.menubar = Menu(self.root)
         self.menubar.add_command(label="eyy", command=self.textf)
         self.newsmenu=Menu(self.menubar)
         self.root.config(menu=self.menubar)
         self.frame=Frame(self.root,width=600)
         self.frame.pack()
         self.root.mainloop()

    def textf(self):
        self.savebutt = Button(self.root, text="News speichern", command=self.savenews)
        self.savebutt.pack(side="top")
        self.frame = Frame(self.root)
        self.txtlabel = Label(self.frame)
        self.txtlabel.pack(side="left")
        global feld
        feld = Text(self.root, width=200, height=180,bg="white")
        feld.pack(side="left")
        feld.delete(0.0,END)
        
        
    def savenews(self):
        oeffnen = open("news.txt", "w")
        holen = feld.get(1.0,END)
        oeffnen.write(holen)
        oeffnen.close() 
        
        

CMS()
Jetzt funktioniert zum Glück alles bestens. Ich werde jetzt erstmal die ganzen News durch XML gliedern, der Möglichkeiten XML mit Python zu verarbeiten sind ja großartig!

Gruß Hanman[/code]
'Ich liebe es wenn ein Plan funktioniert'
Antworten