Seite 1 von 1

get und andere Probleme

Verfasst: Samstag 9. Januar 2010, 12:16
von parazyte
Hiya.
Ich wollte ein Programm schreiben, was aus einer Eingabezeile (Entry) ausliest und das ganze dann weitergibt.
Im Moment sieht das ganze so bei mir aus:

Code: Alles auswählen

from Tkinter import *           
def getit():
	textfenster.insert(END,eingabe.get)
root=Tk()                       
root.title('Entry.get Uebung')
eingabe=Entry(root,background='black',foreground='purple',font='helvetica',width=45)
eingabe.pack()
textfenster=Text(root)
textfenster.pack()
but=Button(root,text='Get it!!',command=getit)
but.pack()
root.mainloop()
Jedoch bekomme Ich anstatt das, was in der Eingabezeile drin ist, das hier: <bound method Entry.get of <Tkinter.Entry instance at 0x01A8F878>>

Irgendeine Idee, was Ich da machen kann?

//Edit: Koennte Ich das, was in der Eingabezeile steht, nicht als Variable speichern und dann durch textfenster.insert(END,$VARIABLE) ausgeben?

Sorry fuer die Fragen, bin recht neu in Python.. :wink:

Verfasst: Samstag 9. Januar 2010, 12:28
von numerix
Der Fehler steckt in Zeile 3. Du willst zwar den Inhalt des Entry-Widgets abfrufen, das tust du aber nicht, weil du nicht die get-Methode AUFRUFST, sondern eine Referenz auf die Methode übergibst. Um sie aufzurufen, musst du ein Paar runde Klammern hintendran hängen. Dann funktioniert alles, wie du es möchtest ...

Verfasst: Samstag 9. Januar 2010, 12:36
von parazyte
Wow, tatsaechlich. Es hat funktioniert. Danke dafuer. Jetzt habe Ich aber schon wieder eine Frage..

Ist es moeglich, das durch get() ausgelesene, an ein anderes .py-Script als Parameter weiterzugeben?
z.B.
eingabe.get() gibt --help aus.
Dann moechte Ich, dieses --help an ein anderes .py-Script weitergeben, als Parameter damit es so aussieht:
eingabe.get()
???
beispiel.py --whatever in eingabe.get() drin ist

Waere das moeglich?

//Edit: Anstatt den Parameter an ein anderes .py-Script zu senden, waere es fuer mich besser, es an eine .exe zu senden. Waere das moeglich? Ansonsten muesste Ich naemlich doch das .py-Script benutzen, anstatt die .exe die Ich compiled habe.

Verfasst: Samstag 9. Januar 2010, 13:54
von numerix
Du könntest aus deinem Python-Skript heraus via subprocess dein exe-File starten und dabei beliebige Parameter - auch deinen ausgelesenen Text - übergeben.

Verfasst: Samstag 9. Januar 2010, 14:17
von parazyte
Irgendwie, will das nicht so funktionieren.
Ich weiss nicht genau, wo Ich nun hinschreiben soll, welche .exe er oeffnen soll mit welchen Parametern. :|

Mein Code sieht atm so aus:

Code: Alles auswählen

from Tkinter import *           
def getit():
		class subprocess.Popen(eingabe.get(),executable=beispiel) 
root=Tk()                        
root.title('Entry.get Uebung')
eingabe=Entry(root,background='black',foreground='purple',font='helvetica',width=45)
eingabe.pack()
textfenster=Text(root)
textfenster.pack()
but=Button(root,text='Get it!',command=getit)
but.pack()
root.mainloop()
Ich sehe daran nichts falsches.
Python sagt jedoch:

C:\Users\xxxxx\Commands\Compile>"Entry Get.py"
File "C:\Users\xxxxx\Commands\Compile\Entry Get.py", line 3
class subprocess.Popen(eingabe.get(),executable=beispiel)
^
SyntaxError: invalid syntax

Irgendwelche Ideen?

Verfasst: Samstag 9. Januar 2010, 15:46
von busfahrer
Hallo

hab zwar kein Windows,habe es aber mal unter Linux mit dem Programm "ls" gemacht.Ins Entry habe ich "--help" eingegeben.

Code: Alles auswählen

#!/usr/bin/env python

import Tkinter as tk
import subprocess
def getit():
    subprocess.Popen(["ls",eingabe.get()])

root = tk.Tk()                        
root.title('Entry.get Uebung') 
eingabe = tk.Entry(root, background='black', foreground='purple',
                   font='helvetica', width=45) 
eingabe.pack() 
textfenster = tk.Text(root) 
textfenster.pack() 
but = tk.Button(root, text='Get it!', command=getit) 
but.pack() 
root.mainloop()
Gruß...busfahrer

Verfasst: Samstag 9. Januar 2010, 16:32
von parazyte
Danke, das hat funktioniert. Jedoch, tut sich nun ein neuer Fehler auf.

Traceback (most recent call last):
File "beispiel.py", line 6, in <module>
ImportError: No module named htmlentitydefs

Das ist der Fehler, den Ich bekomme, wenn Ich den Button druecke.
Ich habe in beiden .py Dateien die htmlentitydefs imported.
Sieht ungefaehr so aus:

Code: Alles auswählen

import htmlentitydefs
import httplib
import locale
import math
import netrc
import os
import os.path
import re
import socket
import string
import subprocess
import sys
import time
import urllib
import urllib2
In beiden .py Dateien habe Ich das so. Ich verstehe nicht, warum Ich den Fehler bekommen sollte?

//Edit: Ich habe Python 2.6.4.,fuer die, die es interessiert.