2011-10-04 21 views
0

所以我在python上有這個代碼,它在執行shell命令時從控制檯檢索輸出。如何將輸入添加到wxPython的命令行提示符中?

def OnClick(self, event): 
    cmd = self.command.GetValue() 
    if cmd: 
     input, output, errors = os.popen3(cmd) 
     errors = errors.read() 
    if errors: 
     dlg = wx.MessageDialog(self, errors, 
     'An error occurred', 
     wx.OK | wx.ICON_EXCLAMATION) 
     dlg.ShowModal() 
     self.output.SetValue('') 
    else: 
     self.output.SetValue(output.read()) 

這適用於簡單的打印,但我在控制檯上有密碼提示,我想從wxPython進行交互。這是可能的嗎?在這種情況下你會怎麼做?

回答

0

通常當你有一個長時間運行的進程時,你需要使用一個線程。有關幾個示例解決方案,請參見wiki.wxpython.org/LongRunningTasks。當你到達密碼提示符時,你可以發送某種通知到GUI來顯示使用wx.CallAfter或wx.PostEvent的對話框。有一些方法可以與某個主題進行交流,但由於它超出了簡單答案的範圍,因此我會將其留給Google。

+0

謝謝,它提供一些想法。我發現這是非常接近我的意思,但不完全是:http://wiki.wxpython.org/CallAfter 我想保持控制檯從視圖和只與wxPython交互。需要研究更多的明天... – MarkokraM

+0

問題還沒有解決 – MarkokraM

+0

我會推薦發佈到wxPython郵件列表。他們可以給你更尖銳的建議。 –

相關問題