get und andere Probleme

Fragen zu Tkinter.
Antworten
parazyte
User
Beiträge: 4
Registriert: Samstag 9. Januar 2010, 12:05
Kontaktdaten:

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:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ...
parazyte
User
Beiträge: 4
Registriert: Samstag 9. Januar 2010, 12:05
Kontaktdaten:

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Du könntest aus deinem Python-Skript heraus via subprocess dein exe-File starten und dabei beliebige Parameter - auch deinen ausgelesenen Text - übergeben.
parazyte
User
Beiträge: 4
Registriert: Samstag 9. Januar 2010, 12:05
Kontaktdaten:

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?
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

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
Alles wird gut ;-)
parazyte
User
Beiträge: 4
Registriert: Samstag 9. Januar 2010, 12:05
Kontaktdaten:

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.
Antworten