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:

Beitragvon Hanman » 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

Beitragvon 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]
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » 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: 1360
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » 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:

Beitragvon Hanman » 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'

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]