2013-06-25 62 views
1

大家好我正在学习Python并使用wxPython制作GUI模型。连接到SSH后弹出消息框

我想连接到SSH,我用pexpect为此目的。我想显示一个信息框,说:“连接到服务器”,或者如果断开连接,“没有建立连接” 我无法弄清楚如何做到这一点,并且GUI在连接时冻结。我如何避免冻结GUI? 我的示例代码:

import time 
import sys 
import pexpect 
c = pexpect.spawn("ssh -Y -L xxxx:localhost:xxxx user @ host.com") 
#time.sleep(0.1) 
c.expect("[pP]aasword") 
c.sendline("xxxxxx") 
#time.sleep(0.2) 
c.interact() 
c.pexpect([[email protected]~]$) 

其接通后到这里SSH,则GUI冻结。连接后,我想在消息框中显示连接状态,而不是在终端中。请建议如何去做;作为初学者我觉得很困难。

在此先感谢。

更新:

import wx 
import os 
import pexpect 
import sys 
import subprocess 
import time 
class Connect_ssh(wx.Frame): 
    def __init__ (self, *args, **kw): 
     wx.Frame.__init__(self,None,wx.ID_ANY,"Secure Shell", size=(310,200),style=wx.DEFAULT_FRAME_STYLE^wx.MAXIMIZE_BOX^wx.RESIZE_BORDER) 
     panel = wx.Panel(self) 
     txt1 = wx.StaticText(panel, label="Account name:",pos=(20, 55)) 
     txt2 = wx.StaticText(panel, label="Password",pos=(20, 105)) 
     self.txt_name = wx.TextCtrl(panel, -1, size=(130, -1), pos=(160,50)) 
     self.txt_pswd= wx.TextCtrl(panel, -1, size=(130, -1),pos= (160,100),style=wx.TE_PASSWORD) 
     button1 = wx.Button(panel, -1, "Connect",size=(-1,-1), pos=(50, 160)) 
     button2 = wx.Button(panel, -1, "Disconnect",size=(-1,-1), pos=(170, 160)) 
     self.Bind(wx.EVT_BUTTON,self.OnConc,button1) 
    def OnConc(self,event): 
     u_name = self.txt_name.GetValue() 
     passwd = self.txt_pswd.GetValue() 
     child = pexpect.spawn("ssh -Y -L xxx:localhost:xxx %[email protected]" % (str(u_name))) 
     child.expect("%[email protected]'s password:" % (str(u_name))) 
     child.sendline("%s" % (str(passwd))) 
     child.interact() 
     #child.sendline("%s" % str(sub)) 
     child.expect("[%[email protected]~]$"% (str(u_name))) 
     #time.sleep() 
     #self.Destroy() 
     msg = wx.MessageBOx(" '%s'@host.com is connected" % (str(u_name)), "Info",wx_OK) 
     self.Hide() 

if __name__=="__main__": 
app = wx.App() 
Connect_ssh().Show() 
app.MainLoop() 
+0

哪里是哪里,你弹出消息框的代码? –

+0

不在这..我只是想知道我们是否有任何方式来显示消息并克服从GUI冻结 – nammu

+0

你不能只是问这个问题,并期待一个答案。这是你做错了什么。我们如何调试我们看不到的代码? –

回答