Hallo!
Kann man dieses an sich sehr praktische Fenster [1] auch für Statusausgaben nutzen? Ich hätte schon die Funktionen versucht, die das Ding so anbietet, aber meine Ausgaben wandern alle in den Input der Shell, also wenn ich was rausschreibe und der User drückt dann in der Shell "Enter", gibt's Fehler.
Weiß da jemand einen besseren Weg, wie ich Statusausgaben mit einer PythonShell verbinden kann?
[1] http://wxpython.wxcommunity.com/docs/ap ... class.html
wx.py.shell.Shell: Ausgabe von Text in das Shell Fenster
-
- User
- Beiträge: 39
- Registriert: Montag 27. November 2006, 16:07
- Wohnort: Linz, Oberösterreich
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi hmueller!hmueller hat geschrieben:Kann man dieses an sich sehr praktische Fenster auch für Statusausgaben nutzen?
Keine Ahnung! Aber vielleicht genügt es ja schon, wenn du ein ``#`` vor deine Statusausgabe stellst. Das könnte dann evt. als Kommentar betrachtet werden.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi.
Mit ``write`` geht das.
Output:
lg
Mit ``write`` geht das.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
from wx.py.shell import Shell
wx.SetDefaultPyEncoding("iso-8859-1")
class MainFrame(wx.Frame):
def __init__(self, parent=None, id=-1, title = "MyApp"):
wx.Frame.__init__(self, parent, id, title)
self.Centre()
self.panel = wx.Panel(self)
pyshell = Shell(parent = self.panel)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(pyshell, 1, wx.EXPAND | wx.ALL, 5)
self.panel.SetSizer(vbox)
pyshell.write("Hello World\n")
pyshell.write("Hello World2\n")
pyshell.write("Hello World3")
def main():
app = wx.PySimpleApp()
mf = MainFrame()
mf.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Output:
Code: Alles auswählen
[...]
Hello World
Hello World2
Hello World3
Ups.hmueller hat geschrieben:[...]wenn ich was rausschreibe und der User drückt dann in der Shell "Enter", gibt's Fehler.
Dann natürlich so wie Gerold vorgeschlagen hat.
Code: Alles auswählen
[...]
pyshell.write("# Hello World\n")
pyshell.write("# Hello World2\n")
pyshell.write("# Hello World3")
[...]

Bau dir lieber selber was. So ist das nicht besonder Professional.
-
- User
- Beiträge: 39
- Registriert: Montag 27. November 2006, 16:07
- Wohnort: Linz, Oberösterreich
Naja, das ist ja das was ich meine:
Dann drückt der User Enter in der Shell...
Code: Alles auswählen
self.shell = py.shell.Shell(self.rightwindow)
self.shell.write("blu\n")
self.shell.write("bla\n")
Code: Alles auswählen
>>> blu
bla
File "<input>", line 1
blu
^
SyntaxError: invalid syntax
>>>
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
-
- User
- Beiträge: 39
- Registriert: Montag 27. November 2006, 16:07
- Wohnort: Linz, Oberösterreich
ah, ok, hast den Fehler eh schon bemerkt 
Selber bauen heisst was?
Ich hätte gern ein Fenster, in dem die Logausgaben erscheinen, und der User aber auch Shell kommandos abgeben kann.
Gibt's da was oder muss ich das auch noch selbst bauen?

Selber bauen heisst was?
Ich hätte gern ein Fenster, in dem die Logausgaben erscheinen, und der User aber auch Shell kommandos abgeben kann.
Gibt's da was oder muss ich das auch noch selbst bauen?
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
Ach so, du willst das Logfenster gleichzeitig als richtige Shell verwenden.
Naja, ich würde die beiden Bereich von einander trennen.
Ob es schon eine fertige Lösung gibt für ein Log-Fenster weiß ich nicht.
Aber ein Widget zu bauen ist nicht so aufwendig. Je nachdem was du willst.
Du könntest z.B. von ``html.HtmlWindow`` (Wobei du hier noch viele Formatierungsmöglichkeiten per HTML hast, icons, etc) oder ``ListCtrl``erben.
Am simpelsten wäre es aber direkt was mit ``TextCtrl`` zu machen, das nach aussen hin nur zum Lesen Aktiviert ist. Dann kann nur dein Programm (und nicht der Benutzer selber) dort seine Meldungen reinschreiben.
Ich hatte mir damals dafür ein Widget, dass von ``html.HtmlWindow`` erbt, geschrieben. Ist aber noch nicht richtig Fertig (Muss noch eine Möglichkeit für eine optionale Umleitung von stderr und/oder stdout implementieren und docstrings schreiben.)
lg
Naja, ich würde die beiden Bereich von einander trennen.
Ob es schon eine fertige Lösung gibt für ein Log-Fenster weiß ich nicht.
Aber ein Widget zu bauen ist nicht so aufwendig. Je nachdem was du willst.
Du könntest z.B. von ``html.HtmlWindow`` (Wobei du hier noch viele Formatierungsmöglichkeiten per HTML hast, icons, etc) oder ``ListCtrl``erben.
Am simpelsten wäre es aber direkt was mit ``TextCtrl`` zu machen, das nach aussen hin nur zum Lesen Aktiviert ist. Dann kann nur dein Programm (und nicht der Benutzer selber) dort seine Meldungen reinschreiben.
Ich hatte mir damals dafür ein Widget, dass von ``html.HtmlWindow`` erbt, geschrieben. Ist aber noch nicht richtig Fertig (Muss noch eine Möglichkeit für eine optionale Umleitung von stderr und/oder stdout implementieren und docstrings schreiben.)
lg
@hmueller: Wichtiger Hinweis!
wx.lib.shell
ist
Benutze stattdessen ``Shell`` aus folgenden Package: wx.py.shell
lg
wx.lib.shell
ist
Es wird also demnächst wegfallen.########################################\\
# THIS MODULE IS NOW DEPRECATED |
# |
# Please see the most excellent PyCrust |
# package instead. |
########################################/
Benutze stattdessen ``Shell`` aus folgenden Package: wx.py.shell
lg
-
- User
- Beiträge: 39
- Registriert: Montag 27. November 2006, 16:07
- Wohnort: Linz, Oberösterreich
Danke, aber das tu' ich sowieso.
Ich werd' mal mit $Chef sprechen, wie er sich das genau vorstellt, aber ich glaube einfach Log und Shell zu trennen ist das einfachste.
Ich werd' mal mit $Chef sprechen, wie er sich das genau vorstellt, aber ich glaube einfach Log und Shell zu trennen ist das einfachste.
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.