wxpython设计一个简易的ssh连接软件

利用paramiko,wxpython 实现一个连接linux,操作shell命令的功能,刚起步,后面有待发展,完善。

#coding:utf-8

import wx
import paramiko
import threading
import platform
class SSHMainWindow(wx.App):
    def OnInit(self):
        self.width = 1000
        self.hight = 480


        frame = wx.Frame(parent=None, title='SHHWindow', size=(1000, 480))


        self.panel = wx.Panel(frame, -1)
        self.text = wx.TextCtrl(self.panel, -1,"", style=wx.TE_RICH|wx.TE_MULTILINE)
        # menuBar = wx.MenuBar()
        # self.menu = wx.Menu()
        # login = self.menu.Append(-1, 'Login')
        # menuBar.Append(self.menu, '&File')
        # frame.SetMenuBar(menuBar)
        self.startBtn = wx.Button(self.panel, -1,u"执行命令")
        self.Bind(wx.EVT_BUTTON, self.OnStartButton, self.startBtn)
        self.username=wx.StaticText(self.panel,-1,' User Name ')
        self.usernametext = wx.TextCtrl(self.panel,-1,size=(100,-1))
        self.password=wx.StaticText(self.panel,-1,' Password ')
        self.passwordtext = wx.TextCtrl(self.panel,-1,size=(100,-1),style=wx.TE_PASSWORD)
        self.IPadress=wx.StaticText(self.panel,-1,' IP ')
        self.IP_adress=wx.TextCtrl(self.panel,-1,size=(100,-1))
        self.shell=wx.StaticText(self.panel,-1,' SHELL ')
        self.command = wx.TextCtrl(self.panel,-1,size=(200,-1),style=wx.TE_PROCESS_ENTER)
        self.Bind(wx.EVT_TEXT_ENTER ,self.OnStartButton,self.command)
        inner = wx.BoxSizer(wx.HORIZONTAL)
        inner.Add(self.startBtn, 0, wx.RIGHT, 15)
        inner.Add(self.username,0,wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.usernametext,0,wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.password,0,wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.passwordtext,0,wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.IPadress,0,wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.IP_adress, 0, wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.shell,0,wx.ALIGN_CENTER_VERTICAL)
        inner.Add(self.command, 0, wx.ALIGN_CENTER_VERTICAL)
        main = wx.BoxSizer(wx.VERTICAL)
        main.Add(inner, 0, wx.ALL, 5)
        main.Add(self.text, 1, wx.EXPAND|wx.ALL, 5)
        self.panel.SetSizer(main)
        frame.Show()
        return True
    def OnStartButton(self,event):
        try:
            global   ssh


            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(self.IP_adress.GetValue(), 22, self.usernametext.GetValue(), self.passwordtext.GetValue(), timeout=5)
            stdin, stdout, stderr = ssh.exec_command(self.command.GetValue())
            strout=(stdout.read()+stderr.read()).decode('utf-8', 'ignore')
            self.text.WriteText('\r\n')
            self.text.WriteText(strout)
            ssh.close()
        except Exception, e:
                print e
                self.text.WriteText(u"执行失败!")
                return  None
app = SSHMainWindow()

app.MainLoop()




wxPython 中,创建一个面板的基本步骤包括导入必要的库、定义主窗口以及在这个窗口内创建一个面板组件。面板主要用于组织和分隔应用的不同区域。下面是一个详细的步骤介绍和示例代码,展示如何创建一个基本的 wxPython 应用程序,其中包含一个面板。 ### 步骤说明: 1. **引入必要的库**:首先需要引入 wxPython 库及其核心模块,以及可能需要用到的其他特定组件。 2. **创建应用程序和主窗口**:这是整个应用的核心结构。你需要定义一个 `app` 对象和一个 `frame` 或者主窗口 (`main_window`) 对象。 3. **创建面板**:在主窗口内部,你可以添加一个或多个面板。面板可以通过 `wx.Panel` 类来实例化,并设置一些基本属性,例如大小、颜色等。 4. **布局管理**:利用布局管理器来安排面板和其他控件的位置。本示例中将使用 `wx.BoxSizer`。 5. **绑定事件处理**:对于面板内的控件,如果需要添加交互功能(如点击事件),这里也需要进行相应的事件绑定。 6. **显示界面**:最后,显示应用的主窗口。 ### 示例代码: ```python import wx class MyFrame(wx.Frame): def __init__(self): super().__init__(None, title="My App", size=(400, 300)) self.CreateStatusBar() # 创建状态栏 panel = wx.Panel(self) # 创建面板 panel.SetBackgroundColour('LightBlue') # 设置面板背景色 box_sizer = wx.BoxSizer(wx.VERTICAL) # 创建垂直布局管理器 static_text = wx.StaticText(panel, label="欢迎来到我的应用!") # 创建静态文本标签 box_sizer.Add(static_text, 0, wx.ALL, 10) # 将文本加入布局,四周留有10像素空白 button = wx.Button(panel, label="点击我") # 创建按钮 box_sizer.Add(button, 0, wx.ALL | wx.CENTER, 10) # 将按钮加入布局,同时设置对齐方式为中心 panel.SetSizer(box_sizer) # 设置面板的布局管理器 self.Show() if __name__ == '__main__': app = wx.App() frame = MyFrame() app.MainLoop() ``` ### 相关问题: 1. **如何调整面板的大小和位置?** - 可以通过设置 `wx.Panel` 的 `size` 属性或使用布局管理器的属性来自定义面板大小;调整面板位置则可通过布局管理器的添加方法参数进行控制。 2. **如何向面板添加更多类型的控件(如列表框、输入框等)?** - 同样使用 `wx.Panel` 的 `Add` 方法添加各种类型的控件,并适当调整布局管理器的参数以满足布局需求。 3. **如何处理面板内的事件(如按钮点击事件)?** - 需要给对应的控件绑定事件处理器函数,然后在 `wx.Button` 等控件的构造函数中引用这个函数作为参数之一。例如,`wx.Button(..., ..., self.OnButtonClick)`,之后在类中定义 `OnButtonClick` 方法即可实现相应的逻辑。 通过上述步骤和代码示例,你可以构建出具备基础交互功能的 wxPython 应用程序,其中包含了面板的创建与使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值