最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

布同自制Python函數幫助查詢小工具

 更新時間:2011年03月13日 13:12:18   作者:  
Python的自帶文檔功能很不錯,給與我耳目一新的感覺。如果在CMD中進行“行式編程”編程的話,可以隨時隨地的查詢函數的功能,非常方便。
比如在學習list、tuple、dict、str、os、sys等模組的時候,利用Python的自帶文檔可以很快速的全面的學到那些處理的函數。所以這個自帶文檔功能能夠給出學者帶來很大的方便之處,進行簡短的開發(fā)是再好不過的。

  但是,當你離開CMD,要利用IDLE或者要用Komodo Edit等軟件進行“段式編程”的時候,就有些捉襟見肘了。例如,wx庫非常之大,幫助文件有10MB之多,如果你在CMD中打開,你可以想想你需要多少時間才能夠查看到你想要的幫助信息。大規(guī)模的熟悉Python的各種API之后,你會發(fā)現,這個并不是想象的那么好用。不斷的按任意鍵進行翻頁,同時頁面內能夠容納的頁面也有限。所以表現出非常大的不便之處。

  這里大概有兩種方法解決。

  第一,使用Module Docs工具

  這個工具是Python GUI IDLE自帶的一個查詢幫助文件的方法。在里面可以利用網頁的形式,利用本機的本地功能,提供一個模擬在線的一個查詢方法。它可以打開一個網頁,上面可以顯示出所有的函數,并帶有規(guī)范的分類,比較清楚,但是使用起來還是不方便,畢竟沒有搜索功能。如果將查到的網頁內容保存鏈接,那么是不可以持續(xù)使用的。所以這個就有很大的問題,同時,其生成的網頁文件巨大,內存太小是會給系統(tǒng)帶來壓力。所以這個方法并不是一個可以很方便使用的方法。

  第二,自己開發(fā)工具

  其實我也不愿意自己開發(fā)工具,因為這個畢竟需要時間,幾天時間或者幾個周的時間說少也少,說多也多,而且給自己的內心產生的壓力也不小,畢竟需要分心不少來做這個事情。我在網上找了很長時間,都沒有找到,對于wx,我找到一個wxPython API的英文文檔,上面介紹的很不清楚,非常模糊,直接列出了函數和具體的參數,如何使用基本很少提及,而且很多控件的各種style也沒有詳細列舉出來。所以是很不好用的,如果是名字忘掉了,那還可以查一下完整的單詞和詳細的參數列表。其他的功能就完全很少涉及到了。

  鑒于此,我決定自己做一個小工具,花費較小的系統(tǒng)代價來方便的查詢各種函數和模組的功能。這里只給出一個能使用的版本。開放源代碼給大家,代碼風格和控件設計可供初學者模仿。高手愿意來批評我,我洗耳恭聽。后續(xù)版本也會發(fā)布在這里,到時候可能就先封裝之后在發(fā)布,現在發(fā)布的這個是源代碼文件,大家都知道,Python的源代碼文件雙擊即可執(zhí)行。

復制代碼 代碼如下:

#coding=utf-8
#功能介紹:本軟件最初只用于模塊和函數用法的查詢,進行快速的顯示
#擴展功能:可以將查詢成功的結果保存到本地,
# 將里面的部分函數使用漢語進行注釋之后的結果保存下來
# 以保存的關鍵字放于右側列表
#深度擴展:使用數據庫保存結果,并提供增刪查改的接口

from Tkinter import *
from StringIO import StringIO
from tkSimpleDialog import *
import sys
import Pmw
import ConfigParser
import os
import wx

class Finder(Frame):

def OnFind(self):
#執(zhí)行,并獲取結果
info = self.inputStr.get()
if len(info)==0:
return True
buff =StringIO()
temp = sys.stdout #保存標準I/O流
sys.stdout = buff #將標準I/O流重定向到buff對象
self.text.delete(1.0, END)
try:
fmt = 'help('+info+')'
result = eval(fmt)
self.text.insert(1.0, buff.getvalue())
self.savebtn.config(state=NORMAL)
except:
try:
__import__(info)

fmt = 'help('+self.inputStr.get()+')'
result = eval(fmt)
self.text.insert(1.0, buff.getvalue())
except:
self.text.insert(1.0,"ERROR.")
sys.stdout =temp #恢復標準I/O流buff.getvaue()
self.helpbtn.config(state=NORMAL)


def save(self):
#搜索,如果沒有找到就保存,使用ini文件進行,保存數據
#保存原始
tofind = self.inputStr.get()
if len(tofind)==0:
return
filename='s_'+tofind+'.ini'
fout = open(filename,'w')
fout.write(self.text.get(1.0, END).encode('utf-8'))
fout.close()

self.items.append(tofind)
self.items.sort()
self.config.add_section(tofind)
self.config.write(open('data.ini', 'r+'))

nindex = self.items.index(tofind)
self.box.delete(0,END)
self.box.insert(0, *self.items)
self.box.see(nindex)
self.box.selection_set(nindex)

self.savebtn.config(state=DISABLED)

def saveas(self):
#保存修改
index = self.box.curselection()
if index<0:
return
tofind = self.box.get(index)
if len(tofind)==0:
return
strinfo = self.text.get(1.0, END)

filename='s_'+tofind+'.ini'
fout = open(filename,'w')
fout.write(strinfo.encode("UTF-8"))
fout.close()

self.saveasbtn.config(state=DISABLED)

def __init__(self):
Frame.__init__(self)
self.option_add('*Font', 'Verdana 12 bold')
self.pack(expand=YES, fill=BOTH)
self.master.title(u'Python函數查詢器')
self.master.iconname("calc1")

#左側列表,放置已保存的條目,按照字母順序排序
infoF = Frame(self)
infoF.pack(side=LEFT,expand=NO, fill=BOTH)

listF = Frame(infoF)
listF.pack(side=TOP,expand=YES, fill=BOTH)

#獲取項目
self.config = ConfigParser.ConfigParser()
self.config.read('data.ini')
self.items = self.config.sections()
self.items.sort()
self.box = Listbox(listF,width=15,selectmode=SINGLE)
self.box.insert(0, *self.items)
self.box.bind('<ButtonRelease-1>',self.selectionCommand)#使用鼠標釋放消息
self.box.bind('<ButtonRelease-3>',self.boxrightmenu)#使用右鍵菜單刪除項目

self.PopupMenu=Menu(listF)
self.PopupMenu.add_command(label=u'刪除',command=self.deleteitem)
self.PopupMenu.add_command(label=u'重命名',command=self.renameitem)
self.box.pack(side=LEFT,expand=YES,fill=BOTH)

self.slbar = Scrollbar(listF, orient=VERTICAL, command=self.box.yview)
self.slbar.pack(side=RIGHT, expand=NO, fill=BOTH)
self.box.configure(yscrollcommand=self.slbar.set)

btnf = Frame(infoF)
btnf.pack(side=BOTTOM, fill=BOTH)
self.savebtn = Button(btnf, text=u'新建保存',state=DISABLED, command=self.save)
self.savebtn.pack(side=LEFT, expand=YES, fill=BOTH)
self.saveasbtn = Button(btnf, text=u'保存修改',state=DISABLED, command=self.saveas)
self.saveasbtn.pack(side=RIGHT, expand=YES, fill=BOTH)


#包括列表信息和顯示信息
twoF = Frame(self)
twoF.pack(side=BOTTOM, expand=YES, fill=BOTH)

#顯示信息、滾動條
showF = Frame(twoF, relief=SUNKEN)
self.text = Text(showF,height=25, width =65)
self.text.insert(1.0,'information...')
self.text.pack(side=LEFT, expand=YES, fill=BOTH)
self.text.bind("<Key>", self.modify)
self.text.bind("<Double-Button-1>", self.tomodify)
self.ismodified = False
showF.pack(side=TOP,expand=YES, fill=BOTH)

self.scrollbar = Scrollbar(showF, orient=VERTICAL, command=self.text.yview)
self.scrollbar.pack(side=RIGHT, expand=NO, fill=BOTH)
self.text.configure(yscrollcommand=self.scrollbar.set)

#提供輸入接口,和功能如:查找
inputF = Frame(twoF)
inputF.pack(side=BOTTOM, fill=BOTH)
self.inputStr = StringVar()
self.inputStr.set('')
self.info = StringVar()
self.info.set('infomation...')
self.entry = Entry(inputF, relief=SUNKEN, textvariable=self.inputStr)
self.entry.bind("<Return>", self.inputreturn)
self.entry.pack(side=LEFT, expand=YES, fill=BOTH)

self.findbtn = Button(inputF,text=u'查找',command=self.OnFind)
self.findbtn.pack(side=LEFT, expand=YES, fill=BOTH)
self.helpbtn = Button(inputF,text=u'幫助',command=self.OnHelp)
self.helpbtn.pack(expand=NO, fill=Y)

def OnHelp(self):
fp = open('readme.txt')
buff = fp.read()
fp.close()

self.text.delete(1.0, END)
self.text.insert(1.0, buff)
self.helpbtn.config(state=DISABLED)

def deleteitem(self):
#右鍵菜單, 刪除功能
sels = self.box.curselection()
if len(sels) == 0:
pass #print 'no selection'
else:
sec = self.items[int(sels[0])]
self.config.remove_section(sec)
self.config.write(open('data.ini', 'w'))
self.box.delete(sels[0])
# self.items.remove(sels[0]) #是引用效果
self.text.delete(1.0, END)
self.text.insert(1.0,'delete success.')


def renameitem(self,event=None,en=None):
#郵件菜單, 重命名功能
retval = askstring("input",
"input the new name:")
if len(retval)==0:
return
sels = self.box.curselection()
if len(sels) == 0:
pass #print 'no selection'
else:
#數組/表/配置文件
sec = self.items[int(sels[0])]

self.box.delete(0, END)
self.items[int(sels[0])] = retval #數組
self.items.sort()
self.box.insert(0, *self.items) #表

self.config.remove_section(sec)
self.config.add_section(retval)
self.config.write(open('data.ini', 'w')) #配置文件

self.text.delete(1.0, END)
self.text.insert(1.0,'rename success.')


def boxrightmenu(self,event=None,en=None):
#彈出右鍵菜單
self.PopupMenu.tk_popup(*self.winfo_pointerxy())

def tomodify(self,event=None,en=None):
if self.ismodified==True:
self.saveasbtn.config(state=DISABLED)
self.ismodified = False
else:
self.saveasbtn.config(state=NORMAL)
self.ismodified = True
return True

def modify(self,event=None,en=None):
self.saveasbtn.config(state=NORMAL)
return True

def inputreturn(self,event=None,en=None):
self.OnFind()
return True

def selectionCommand(self,event=None,en=None):
# 選中列表時, 顯示詳細內容
sels = self.box.curselection()
if len(sels) == 0:
pass
else:
filename='s_'+self.box.get(sels[0])+'.ini'
fp = open(filename)
strinfo = fp.read()
fp.close()
self.text.delete(1.0, END)
self.text.insert(1.0,strinfo)
self.helpbtn.config(state=NORMAL)

if __name__ == '__main__':
Finder().mainloop()

注意事項,源代碼文件如果想要正確執(zhí)行,請自己建立一個readme.txt文件,和data.ini文件。否則將會因為這兩個文件打不開而出錯。為什么沒有使用異常處理呢?我沒有沒有完善到那一步?,F在這個版本已經可以使用了,所以大家不防試試看。
  想要完整的所有文件,請點擊:附件下載 進行下載。
  【注意】:打開軟件后,請輸入list、tuple、dict等類型進行查詢,點擊新建保存即可保存到列表,供下次快速打開。
       有的包在源代碼中沒有包括,如codecs。這個時候你需要手動的將這個包添加到源文件的開頭,才能夠查詢到,如:import codecs。
       如果你修改了顯示框中的文本,請及時點擊保存修改進行保存,以便下次打開還可以看到你修改的效果。
       本版本并不完善,而且功能有限,本身基于Python做的,所以其價值還是作為Python開發(fā)應用實例為主。
       有修改意見請留言。
2011-03-10 12:15:05
  有網友反映不能夠正確執(zhí)行這個源代碼。我思考之后認為,跟版本應該沒有關系,這些都是很基本的函數和用法。你如果不能夠執(zhí)行,請你嘗試正確安裝Pmw和wx這兩個包。
  1、Pmw的安裝方式為:
    下載:Pmw.1.3.2.tar.gz。這個東西很好找,請百度一下即可。下載之后就地解壓,找到其中的“Pmw”目錄,將這個目錄復制到你Pyhton的安裝目錄下即可,不需要其他具體的目錄。直接是C:\Python27\下就可以,其他的Python版本請相應的做出調整。
  2、wx的安裝方式為:
    下載:wxPython2.8-win32-unicode-2.8.11.0-py27.exe。這個東西請百度一下,估計到wxPython的官方的英文網站下載最好,很多中文網站也提供了下載,所以找到不是難事。雙擊進行默認方式的安裝即可,你不用改變目錄或者其他。它會自動的安裝到你的安裝目錄下,我的目錄是:C:\Python27\Lib\site-packages\wx-2.8-msw-unicode。
  3、Tkinter庫已經系統(tǒng)集成,不需要安裝。主要是上面兩個庫即可。
  4、如何檢驗是否安裝正確?
    安裝之后,請到Python的COMMAND LINE中輸入:import wx或者import Pmw嘗試是否輸入正確。沒有提示信息就是正確的。你還可以進一步看看包中的信息,輸入如:dir(wx)或者dir(Pmw)。不推薦使用help()函數,正如我上面所說,wx的信息多達10MB之多,你是顯示不完的,不斷刷屏的效果估計你不會喜歡。

相關文章

  • Python內置函數詳談

    Python內置函數詳談

    本篇文章主要介紹了Python內置函數的使用方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-10-10
  • Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全

    Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方

    本文主要介紹了Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧Chat?Gpt<BR>
    2023-07-07
  • python采用django框架實現支付寶即時到帳接口

    python采用django框架實現支付寶即時到帳接口

    這篇文章主要介紹了python采用django框架實現支付寶即時到帳接口的相關資料,需要的朋友可以參考下
    2016-05-05
  • django從請求到響應的過程深入講解

    django從請求到響應的過程深入講解

    這篇文章主要給大家介紹了關于django從請求到響應的過程的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用django具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • python基于K-means聚類算法的圖像分割

    python基于K-means聚類算法的圖像分割

    這篇文章主要介紹了python基于K-means聚類算法的圖像分割,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Python django框架 web端視頻加密的實例詳解

    Python django框架 web端視頻加密的實例詳解

    這篇文章主要介紹了Python django框架 web端視頻加密,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python3 gunicorn配置文件的用法解讀

    python3 gunicorn配置文件的用法解讀

    這篇文章主要介紹了python3 gunicorn配置文件的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Python中的np.vstack()和np.hstack()詳解

    Python中的np.vstack()和np.hstack()詳解

    這篇文章主要介紹了np.vstack()和np.hstack(),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • TensorFlow2.X使用圖片制作簡單的數據集訓練模型

    TensorFlow2.X使用圖片制作簡單的數據集訓練模型

    這篇文章主要介紹了TensorFlow2.X使用圖片制作簡單的數據集訓練模型,本文通過截圖實例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python selenium+cookie實現免密登陸的示例代碼

    Python selenium+cookie實現免密登陸的示例代碼

    本文主要介紹了Python selenium+cookie實現免密登陸的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

衢州市| 蚌埠市| 康马县| 濉溪县| 高安市| 永清县| 湄潭县| 五华县| 周宁县| 林州市| 梨树县| 疏附县| 浮梁县| 库车县| 石狮市| 巴中市| 宁津县| 玉门市| 辽宁省| 兰州市| 汉沽区| 新昌县| 海阳市| 白玉县| 尼玛县| 富阳市| 揭阳市| 富民县| 井研县| 广州市| 宜兰市| 开封县| 莲花县| 鲜城| 综艺| 巴里| 若羌县| 墨脱县| 临夏县| 怀来县| 同心县|