基于Python编写一个ISBN查询工具
作者:winfredzhang 发布时间:2022-02-22 09:43:21
标签:Python,ISBN,查询
1.引言
效果图:
ISBN查询工具通常用于图书管理、图书销售、图书收集和阅读等场景。以下是一些具体的应用场景:
图书管理系统:ISBN查询工具可以帮助图书管理员快速准确地查询图书信息,包括书名、作者、出版社、出版日期、价格等,从而方便图书分类、归档和借阅。
图书销售:ISBN查询工具可以帮助书店、图书网站等销售渠道快速准确地查询图书信息,方便顾客浏览和购买图书。
图书收集:ISBN查询工具可以帮助书友快速找到自己需要的图书,并记录下来,方便后续购买或借阅。
阅读:ISBN查询工具可以帮助读者快速查询图书信息,包括书名、作者、出版社、出版日期、价格等,从而帮助读者更好地了解书籍内容,选择适合自己的读物。
2.实例分析
import wx
import requests
class BookInfoFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='图书信息查询', size=(400, 300))
panel = wx.Panel(self)
# 创建文本框和标签
self.isbn_label = wx.StaticText(panel, label='输入书号:')
self.isbn_text = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER)
self.title_label = wx.StaticText(panel, label='书名:')
self.title_text = wx.TextCtrl(panel, style=wx.TE_READONLY)
self.title_text.SetBackgroundColour(wx.WHITE)
self.title_text.SetForegroundColour(wx.BLACK)
# 创建查询按钮
self.query_button = wx.Button(panel, label='查询')
# 设置文本框和按钮的布局
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox1.Add(self.isbn_label, flag=wx.RIGHT, border=5)
hbox1.Add(self.isbn_text, proportion=1)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
hbox2.Add(self.title_label, flag=wx.RIGHT, border=5)
hbox2.Add(self.title_text, proportion=1)
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
hbox3.Add(self.query_button, flag=wx.ALIGN_CENTER)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add((20, 20), proportion=1)
vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
vbox.Add(hbox2, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
vbox.Add((20, 20), proportion=1)
vbox.Add(hbox3, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10)
vbox.Add((20, 20), proportion=1)
panel.SetSizer(vbox)
# 绑定事件处理函数
self.isbn_text.Bind(wx.EVT_TEXT_ENTER, self.on_isbn_enter)
self.query_button.Bind(wx.EVT_BUTTON, self.on_query)
def on_isbn_enter(self, event):
self.on_query(event)
# def on_isbn_enter(self, event):
# self.on_query(event)
def on_query(self, event=None):
isbn = self.isbn_text.GetValue()
if not isbn:
return
url = 'https://openlibrary.org/api/books?bibkeys=ISBN:{}&format=json&jscmd=data'.format(isbn)
# url = f'https://api.douban.com/v2/book/isbn/{isbn}'
response = requests.get(url)
if response.status_code == 200:
book_data = response.json()
if book_data:
# book_info = book_data['ISBN:{}'.format(isbn)]
book_info = book_data['ISBN:{}'.format(isbn)]
self.title_text.SetValue(book_info['title'])
return
self.title_text.SetValue('')
# def on_query(self, event=None):
# isbn = self.isbn_text.GetValue()
# if not isbn:
# return
# url = f'https://api.douban.com/v2/book/isbn/{isbn}'
# response = requests.get(url)
# if response.status_code == 200:
# book_data = response.json()
# if book_data:
# book_info = book_data['ISBN:{}'.format(isbn)]
# self.title_text.SetValue(book_info['title'])
# return
# self.title_text.SetValue('')
if __name__ == '__main__':
app = wx.App()
frame = BookInfoFrame()
frame.Show(True)
app.MainLoop()
3.总结
这是一个使用 wxPython 和 Open Library API 查询 ISBN 书号对应书名的小程序。程序界面包含一个输入框和一个查询按钮,用户可以在输入框内输入 ISBN 书号,点击查询按钮后会自动查询对应书名并显示在文本框内。该程序的主要实现代码在 BookInfoFrame 类的构造函数中,其中绑定了输入框回车和查询按钮的事件处理函数,通过调用 Open Library API 查询对应 ISBN 书号的书名并显示在文本框中。
来源:https://blog.csdn.net/winniezhang/article/details/129482088
0
投稿
猜你喜欢
- 一个简单的JS显示日期代码,可以显示星期几<script type="text/javascript">fu
- 一、常用按键按键说明Keys.BACK_SPACE回退键(BackSpace)Keys.TAB制表键(Tab)Keys.ENTER回车键(E
- 原文:http://www.smashingmagazine.com/ ... emarkable-favicons/翻译:Blank(怿飞
- Stream Grpc在我们单次投递的数据量很大的时候,比如传输一个二进制文件的时候,数据包过大,会造成瞬时传输压力。或者接收方接收到数据后
- 什么是Firebug从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求。要写出漂亮的HTML代码;要编写精致的CSS样式表
- 本文实例讲述了Python使用当前时间、随机数产生一个唯一数字的方法。分享给大家供大家参考,具体如下:Python生成当前时间很简单,比Ja
- Python SMTP发送邮件SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址
- 具体如下: 1>如我们知道开始时间,要加减一个时间,得出一个结果时间,可以用以下代码 $time1='2008-10-1 12
- 本文实例为大家分享了python实现学生管理系统的具体代码,供大家参考,具体内容如下一.面向过程版import osstu_list = [
- 本文实例为大家分享了Django实现分页功能,为了容易区别功能的展现,先创建一个数据库,用数据库中的数据做演示。创建数据库步骤如下:1.创建
- 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流!为了保证在业务高峰期,线上系统也能保证一定的弹性和稳定性,最有效的方案就是进行服
- 如何要恢复Master数据库呢?方法1:重装SQL,但是数据就Over掉了方法2:重建Master Rebuildm.exe 用到SQL的安
- 一:安装pip install web.py二:URL 处理任何网站最重要的部分就是它的URL结构。urls=('/',
- 用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9])([1-9] :匹配1~9的数字;\d :匹配数字,包
- 可以不依靠DSN,但又可以在数据库连接字符串中指定驱动程序、服务器名字、数据库、数据库账号和密码吗?可以。在SQL Server 7,使用这
- 我们在网页中使用CSS来设置网页、表格和字体大小,一般使用的是网络上较流行的9磅字:<STYLE type=TEXT/CSS
- DW2004的中文乱码情况你遇到过么?乱码一般是怎么出现的呢?也许很多时候用其他软件(比如Editplus)写程序的时候,忘了meta标签里
- 引言今天给大家推荐的是web应用安全防护方面的一个包:csrf。该包为Go web应用中常见的跨站请求伪造(CSRF)攻击提供预防功能。cs
- 核心代码# -*- coding: utf-8 -*-'''python读取英文文件,将每个单词按照空格分开,并将每
- jscript 5.7 发布修复了不少ie javascript内存泄露的问题。但是leak依然存在。当我们频繁使用 setInterval