wxPython提供一個shell的應用程式,稱做PyShell,可以在
Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\py目錄下
執行PyShell.py。
目錄下的shell.py中的Shell類別是此shell程式的核心,放到應用程式中即是一個現成的shell介面。此shell介面還支援自動完成與函數提示。
以下是簡單的嵌入範例,將Shell類別置入一個wx.Panel中。
""" ShellPanel provides a shell interface in a panel. # put shell in a frame self.myShellPanel = ShellPanel(objDict = {'win':self}, parent = self) """ import wx import wx.py as py class ShellPanel(wx.Panel): def __init__(self, objDict, *args, **kwds): """\ ShellPanel(objectDict, parent, ...) Create a Shell panel and put some object into this shell; Assign "myHelpInfo" object for default help text.""" # format of objdict: { Name:object } kwds["style"] = wx.TAB_TRAVERSAL wx.Panel.__init__(self, *args, **kwds) self.objectDict = objDict self.myShell = py.shell.Shell(self, -1, locals = self.objectDict ) sizer_Shell = wx.BoxSizer(wx.HORIZONTAL) sizer_Shell.Add(self.myShell, 1, wx.EXPAND, 0) self.SetSizer(sizer_Shell)
self.myShell = py.shell.Shell(self, -1, locals = objDict)
參數locals接收一個{名稱字串:物件}的字典,可將物件以對應的名稱字串在shell介面中操作。如果將應用程式(視窗)本身傳入,即可在shell介面中控制視窗,如上例將視窗物件以"win"命名,並在shell介面下輸入"win.SetTitle('Hello World')",便可改變視窗Title顯示。
此shell介面比起python內建的IDLE仍有些缺點。如下程式碼:
from time import sleep for i in range(10): sleep(1)無法如同在IDLE中,以鍵盤方式中斷。
(參考網頁:命令行的 Python shell 保留了處理鍵盤中斷( Ctrl +C)的能力...)
更多的Shell類別建構參數使用,請參考shell.py原始碼。
沒有留言:
張貼留言