백엔드 개발 파이썬 튜토리얼 布同自制Python函数帮助查询小工具

布同自制Python函数帮助查询小工具

Jun 16, 2016 am 08:47 AM
파이썬 함수 질문

比如在学习list、tuple、dict、str、os、sys等模组的时候,利用Python的自带文档可以很快速的全面的学到那些处理的函数。所以这个自带文档功能能够给出学者带来很大的方便之处,进行简短的开发是再好不过的。

  但是,当你离开CMD,要利用IDLE或者要用Komodo Edit等软件进行“段式编程”的时候,就有些捉襟见肘了。例如,wx库非常之大,帮助文件有10MB之多,如果你在CMD中打开,你可以想想你需要多少时间才能够查看到你想要的帮助信息。大规模的熟悉Python的各种API之后,你会发现,这个并不是想象的那么好用。不断的按任意键进行翻页,同时页面内能够容纳的页面也有限。所以表现出非常大的不便之处。

  这里大概有两种方法解决。

  第一,使用Module Docs工具

  这个工具是Python GUI IDLE自带的一个查询帮助文件的方法。在里面可以利用网页的形式,利用本机的本地功能,提供一个模拟在线的一个查询方法。它可以打开一个网页,上面可以显示出所有的函数,并带有规范的分类,比较清楚,但是使用起来还是不方便,毕竟没有搜索功能。如果将查到的网页内容保存链接,那么是不可以持续使用的。所以这个就有很大的问题,同时,其生成的网页文件巨大,内存太小是会给系统带来压力。所以这个方法并不是一个可以很方便使用的方法。

  第二,自己开发工具

  其实我也不愿意自己开发工具,因为这个毕竟需要时间,几天时间或者几个周的时间说少也少,说多也多,而且给自己的内心产生的压力也不小,毕竟需要分心不少来做这个事情。我在网上找了很长时间,都没有找到,对于wx,我找到一个wxPython API的英文文档,上面介绍的很不清楚,非常模糊,直接列出了函数和具体的参数,如何使用基本很少提及,而且很多控件的各种style也没有详细列举出来。所以是很不好用的,如果是名字忘掉了,那还可以查一下完整的单词和详细的参数列表。其他的功能就完全很少涉及到了。

  鉴于此,我决定自己做一个小工具,花费较小的系统代价来方便的查询各种函数和模组的功能。这里只给出一个能使用的版本。开放源代码给大家,代码风格和控件设计可供初学者模仿。高手愿意来批评我,我洗耳恭听。后续版本也会发布在这里,到时候可能就先封装之后在发布,现在发布的这个是源代码文件,大家都知道,Python的源代码文件双击即可执行。

复制代码 代码如下:

#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):
#执行,并获取结果
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 indexreturn
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('',self.selectionCommand)#使用鼠标释放消息
self.box.bind('',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("", self.modify)
self.text.bind("", 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("", 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()

注意事项,源代码文件如果想要正确执行,请自己建立一个readme.txt文件,和data.ini文件。否则将会因为这两个文件打不开而出错。为什么没有使用异常处理呢?我没有没有完善到那一步。现在这个版本已经可以使用了,所以大家不防试试看。
  想要完整的所有文件,请点击:附件下载 进行下载。
  【注意】:打开软件后,请输入list、tuple、dict等类型进行查询,点击新建保存即可保存到列表,供下次快速打开。
       有的包在源代码中没有包括,如codecs。这个时候你需要手动的将这个包添加到源文件的开头,才能够查询到,如:import codecs。
       如果你修改了显示框中的文本,请及时点击保存修改进行保存,以便下次打开还可以看到你修改的效果。
       本版本并不完善,而且功能有限,本身基于Python做的,所以其价值还是作为Python开发应用实例为主。
       有修改意见请留言。
2011-03-10 12:15:05
  有网友反映不能够正确执行这个源代码。我思考之后认为,跟版本应该没有关系,这些都是很基本的函数和用法。你如果不能够执行,请你尝试正确安装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库已经系统集成,不需要安装。主要是上面两个库即可。
  4、如何检验是否安装正确?
    安装之后,请到Python的COMMAND LINE中输入:import wx或者import Pmw尝试是否输入正确。没有提示信息就是正确的。你还可以进一步看看包中的信息,输入如:dir(wx)或者dir(Pmw)。不推荐使用help()函数,正如我上面所说,wx的信息多达10MB之多,你是显示不完的,不断刷屏的效果估计你不会喜欢。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

12306 항공권 구매 내역 확인 방법 항공권 구매 내역 확인 방법 12306 항공권 구매 내역 확인 방법 항공권 구매 내역 확인 방법 Mar 28, 2024 pm 03:11 PM

12306 티켓 예매 앱의 최신 버전을 다운로드하세요. 모두가 매우 만족하는 여행 티켓 구매 소프트웨어입니다. 소프트웨어에서 제공되는 다양한 티켓 소스가 있어 매우 편리합니다. - 실명인증으로 온라인 구매가 가능합니다. 모든 사용자가 쉽게 여행티켓과 항공권을 구매하고 다양한 할인 혜택을 누릴 수 있습니다. 또한 사전에 예약하고 티켓을 얻을 수도 있습니다. 호텔을 예약하거나 차량으로 픽업 및 하차할 수도 있습니다. 한 번의 클릭으로 원하는 곳으로 이동하고 티켓을 구매할 수 있어 여행이 더욱 간편해지고 편리해집니다. 모든 사람의 여행 경험이 더욱 편안해졌습니다. 이제 편집자가 온라인으로 자세히 설명합니다. 12306명의 사용자에게 과거 티켓 구매 기록을 볼 수 있는 방법을 제공합니다. 1. 철도 12306을 열고 오른쪽 하단의 My를 클릭한 후 My Order를 클릭합니다. 2. 주문 페이지에서 Paid를 클릭합니다. 3. 유료페이지에서

Xuexin.com에서 학업 자격을 확인하는 방법 Xuexin.com에서 학업 자격을 확인하는 방법 Mar 28, 2024 pm 04:31 PM

Xuexin.com에서 내 학업 자격을 어떻게 확인하나요? Xuexin.com에서 학업 자격을 확인할 수 있습니다. 많은 사용자가 Xuexin.com에서 학업 자격을 확인하는 방법을 모릅니다. 다음으로 편집자는 Xuexin.com에서 학업 자격을 확인하는 방법에 대한 그래픽 튜토리얼을 제공합니다. 유저들이 와서 구경해 보세요! Xuexin.com 사용 튜토리얼: Xuexin.com에서 학업 자격을 확인하는 방법 1. Xuexin.com 입구: https://www.chsi.com.cn/ 2. 웹사이트 쿼리: 1단계: Xuexin.com 주소를 클릭합니다. 위의 홈페이지에 들어가려면 [교육 쿼리]를 클릭합니다. 2단계: 최신 웹페이지에서 아래 그림의 화살표와 같이 [쿼리]를 클릭합니다. 3단계: 새 페이지에서 [학점 파일에 로그인]을 클릭합니다. 4단계: 로그인 페이지에서 정보를 입력하고 [로그인]을 클릭합니다.

MySQL과 PL/SQL의 유사점과 차이점 비교 MySQL과 PL/SQL의 유사점과 차이점 비교 Mar 16, 2024 am 11:15 AM

MySQL과 PL/SQL은 각각 관계형 데이터베이스와 절차적 언어의 특성을 나타내는 서로 다른 두 가지 데이터베이스 관리 시스템입니다. 이 기사에서는 구체적인 코드 예제를 통해 MySQL과 PL/SQL 간의 유사점과 차이점을 비교합니다. MySQL은 SQL(구조적 쿼리 언어)을 사용하여 데이터베이스를 관리하고 운영하는 인기 있는 관계형 데이터베이스 관리 시스템입니다. PL/SQL은 Oracle 데이터베이스 고유의 절차적 언어로 저장 프로시저, 트리거, 함수 등의 데이터베이스 개체를 작성하는 데 사용됩니다. 같은

Apple 휴대폰의 활성화 날짜를 확인하는 방법 Apple 휴대폰의 활성화 날짜를 확인하는 방법 Mar 08, 2024 pm 04:07 PM

애플 휴대폰을 이용하여 개통일을 확인하고 싶다면 휴대폰에 있는 일련번호를 통해 확인하는 것이 가장 좋은 방법이며, 애플 공식 홈페이지를 방문하여 컴퓨터에 연결한 후 세 번째 다운로드를 통해 확인할 수도 있습니다. - 그것을 확인하는 파티 소프트웨어. Apple 휴대폰의 활성화 날짜를 확인하는 방법은 무엇입니까? 답변: 일련번호 쿼리, Apple 공식 웹사이트 쿼리, 컴퓨터 쿼리, 타사 소프트웨어 쿼리 1. 사용자가 휴대폰의 일련번호를 아는 것이 가장 좋습니다. 설정, 일반, 이 기기 정보를 열어 일련번호를 확인할 수 있습니다. 2. 일련번호를 이용하면 휴대폰 개통일뿐만 아니라 휴대폰 버전, 휴대폰 원산지, 휴대폰 공장일 등을 확인할 수 있습니다. 3. 사용자는 Apple의 공식 웹 사이트를 방문하여 기술 지원을 찾고, 페이지 하단의 서비스 및 수리 열을 찾아 거기에서 iPhone 활성화 정보를 확인합니다. 4. 사용자

Oracle을 사용하여 테이블이 잠겨 있는지 쿼리하는 방법은 무엇입니까? Oracle을 사용하여 테이블이 잠겨 있는지 쿼리하는 방법은 무엇입니까? Mar 06, 2024 am 11:54 AM

제목: Oracle을 사용하여 테이블이 잠겨 있는지 쿼리하는 방법은 무엇입니까? Oracle 데이터베이스에서 테이블 잠금은 트랜잭션이 테이블에 쓰기 작업을 수행할 때 다른 트랜잭션이 테이블에 쓰기 작업을 수행하거나 테이블에 구조적 변경(예: 열 추가, 행 삭제)을 수행하려고 할 때 차단된다는 것을 의미합니다. , 등.). 실제 개발 과정에서 관련 문제를 더 잘 해결하고 처리하기 위해 테이블이 잠겨 있는지 쿼리해야 하는 경우가 종종 있습니다. 이 기사에서는 Oracle 문을 사용하여 테이블이 잠겨 있는지 쿼리하는 방법을 소개하고 특정 코드 예제를 제공합니다. 테이블이 잠겨 있는지 확인하려면

Discuz 데이터베이스 위치 쿼리 기술 공유 Discuz 데이터베이스 위치 쿼리 기술 공유 Mar 10, 2024 pm 01:36 PM

포럼은 인터넷에서 가장 일반적인 웹사이트 형태 중 하나입니다. 포럼은 사용자에게 정보를 공유하고 토론을 교환할 수 있는 플랫폼을 제공합니다. Discuz는 일반적으로 사용되는 포럼 프로그램이며 많은 웹마스터들이 이미 이에 대해 매우 잘 알고 있다고 생각합니다. Discuz 포럼을 개발하고 관리하는 동안 분석이나 처리를 위해 데이터베이스의 데이터를 쿼리해야 하는 경우가 종종 있습니다. 이 글에서는 Discuz 데이터베이스의 위치를 ​​쿼리하기 위한 몇 가지 팁을 공유하고 구체적인 코드 예제를 제공합니다. 먼저 Discuz의 데이터베이스 구조를 이해해야 합니다.

최신 BitTorrent 코인 가격을 확인하는 방법은 무엇입니까? 최신 BitTorrent 코인 가격을 확인하는 방법은 무엇입니까? Mar 06, 2024 pm 02:13 PM

BitTorrent 코인(BTT)의 최신 가격을 확인하세요. BTT는 파일 공유 및 다운로드에 대해 BitTorrent 네트워크 사용자에게 보상하는 데 사용되는 TRON 블록체인의 암호화폐입니다. BTT의 최신 가격을 찾는 방법은 다음과 같습니다. 신뢰할 수 있는 가격 확인 웹사이트나 앱을 선택하세요. 일반적으로 사용되는 가격 쿼리 웹사이트는 다음과 같습니다: CoinMarketCap: https://coinmarketcap.com/Coindesk: https://www.coindesk.com/Binance: https://www.binance.com/ 웹사이트나 앱 BTT에서 검색하세요. BTT의 최신 가격을 확인하세요. 참고: 암호화폐 가격

Tongshen Coin의 최신 가격을 확인하는 방법은 무엇입니까? Tongshen Coin의 최신 가격을 확인하는 방법은 무엇입니까? Mar 21, 2024 pm 02:46 PM

Tongshen Coin의 최신 가격을 확인하는 방법은 무엇입니까? 토큰은 게임 내 아이템, 서비스 및 자산을 구매하는 데 사용할 수 있는 디지털 통화입니다. 이는 분산되어 있어 정부나 금융 기관의 통제를 받지 않습니다. Tongshen Coin의 거래는 모든 Tongshen Coin 거래 정보를 기록하는 분산 원장인 블록체인에서 수행됩니다. 토큰의 최신 가격을 확인하려면 다음 단계를 따르세요. 신뢰할 수 있는 가격 확인 웹사이트나 앱을 선택하세요. 일반적으로 사용되는 가격 쿼리 웹사이트는 다음과 같습니다: CoinMarketCap: https://coinmarketcap.com/Coindesk: https://www.coindesk.com/ Binance: https://www.bin

See all articles