

Code: Alles auswählen
def transcode(self, event): # wxGlade: MainWin.<event_handler>
process = subprocess.Popen('bin\\devdump', shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
process.wait()
proc_output_stdout = process.stdout.read()
self.list_box_1.Append (proc_output_stdout)
event.Skip()
Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
# generated by wxGlade 0.6.3 on Wed Aug 06 12:09:01 2008
import wx
import subprocess
# begin wxGlade: dependencies
# end wxGlade
# begin wxGlade: extracode
# end wxGlade
class MainWin(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MainWin.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.process = None
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
self.panel_1 = wx.Panel(self, -1)
self.text_ctrl_1 = wx.TextCtrl(self.panel_1, -1, "")
self.static_line_1 = wx.StaticLine(self.panel_1, -1)
self.btn_transcode = wx.Button(self.panel_1, -1, "Umwandeln")
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_BUTTON, self.transcode, self.btn_transcode)
# end wxGlade
def __set_properties(self):
# begin wxGlade: MainWin.__set_properties
self.SetTitle("CD2MP3")
self.text_ctrl_1.SetMinSize((400, 150))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MainWin.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_3 = wx.BoxSizer(wx.VERTICAL)
sizer_3.Add(self.text_ctrl_1, 0, wx.ALL, 5)
sizer_3.Add(self.static_line_1, 0, wx.ALL|wx.EXPAND, 5)
sizer_3.Add(self.btn_transcode, 0, wx.ALL, 5)
sizer_2.Add(sizer_3, 0, wx.EXPAND, 0)
self.panel_1.SetSizer(sizer_2)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
self.Centre()
# end wxGlade
def transcode(self, event): # wxGlade: MainWin.<event_handler>
self.timer.Start(10)
self.process = subprocess.Popen('bin//cdda2wav.exe -L 0', stdout=subprocess.PIPE)
event.Skip()
def OnTimer(self, event):
out = self.process.stdout
line = out.readline()
if line:
self.text_ctrl_1.AppendText(line)
else:
self.timer.Stop()
# end of class MainWin
Verstehe ich nicht so ganz. Woher sollte mein Textfeld denn dann wissen, welche Sachen es annehmen sollte?wx leitet automatisch die stdout Ausgabe in Textfenster um, wenn welche zur Verfügung stehen.
Dazu musst du dein App Objekt mit True als erstem Argument instanzieren.
Ich finde leider nur dieses hierSuche in der wxPython-Demo nach "Process". Schau dir dort das Beispiel an. Dort wird genau das gemacht was du machen möchtest.
Das ist keine Lösung für dich. Vergiss es.The Hit-Man hat geschrieben:Verstehe ich nicht so ganz. Woher sollte mein Textfeld denn dann wissen, welche Sachen es annehmen sollte?wx leitet automatisch die stdout Ausgabe in Textfenster um, wenn welche zur Verfügung stehen.
Dazu musst du dein App Objekt mit True als erstem Argument instanzieren.
Bitte nicht wxWidgets mit wxPython verwechseln.The Hit-Man hat geschrieben:Ich finde leider nur dieses hierSuche in der wxPython-Demo nach "Process". Schau dir dort das Beispiel an. Dort wird genau das gemacht was du machen möchtest.http://www.wxwidgets.org/downloads/demos.htm und da finde ich nichts mit Process.
Habe ich gemachtSuche in der wxPython-Demo nach "Process". Schau dir dort das Beispiel an. Dort wird genau das gemacht was du machen möchtest.
Hallo Hit-Man!The Hit-Man hat geschrieben:Hatte mal "cdda2wav -L 0" eingetragen.
Hallo Hit-Man!The Hit-Man hat geschrieben:Leider genau das gleiche. Das Augabefenster bleibt leider leer
Code: Alles auswählen
def OnSendText(self, evt):
text = self.inp.GetValue()
self.inp.SetValue('')
self.log.write('OnSendText: "%s"\n' % text)
self.process.GetOutputStream().write(text + '\n')
self.process.GetErrorStream().write(text + '\n')
self.inp.SetFocus()
Hallo Hit-Man!The Hit-Man hat geschrieben:ne, leider auch nichts
Code: Alles auswählen
##!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import os
import wx
import threading
import subprocess
wx.SetDefaultPyEncoding("iso-8859-15")
class WorkerThread(threading.Thread):
def __init__(self, statuslog_function):
threading.Thread.__init__(self)
self.statuslog_function = statuslog_function
def run(self):
args = ["dir", os.path.expandvars("$WINDIR")]
process = subprocess.Popen(
args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT
)
for line in process.stdout:
self.statuslog_function(line)
class MyFrame(wx.Frame):
def __init__(
self, parent = None, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, -1, title, size = size)
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
self.textctrl = wx.TextCtrl(panel, style = wx.TE_MULTILINE)
vbox_main.Add(self.textctrl, 1, wx.EXPAND | wx.ALL, 5)
btn_start = wx.Button(panel, label = u"Start")
vbox_main.Add(btn_start, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)
btn_start.Bind(wx.EVT_BUTTON, self.start_thread)
def statuslog_function(self, logentry):
wx.CallAfter(self.textctrl.AppendText, logentry)
def start_thread(self, event = None):
self.workerthread = WorkerThread(self.statuslog_function)
self.workerthread.start()
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Code: Alles auswählen
args = ["<pfad zu cdda2wav>", "-L", "0", "--gui"]
Hallo Hit-Man!The Hit-Man hat geschrieben:auch das geht leider nicht
Eigentlich kannste cdda2wav.exe direkt in der Konsole starten, ohne Parametern und es erwartet auch keine Tasteneingabe oder so. Habe so das gefühl, so lange das Programm noch nicht fertig ist, wird auch keine Ausgabe auf das Fenster erfolgenErwartet CDDA2WAV irgendetwas an STDIN? Mit welchen Parametern hast du CDDA2WAV genau gestartet?