基于Python编写一个ISBN查询工具

作者:winfredzhang 时间:2022-02-22 09:43:21 

1.引言

效果图:

基于Python编写一个ISBN查询工具

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

标签:Python,ISBN,查询
0
投稿

猜你喜欢

  • 互联网产品的用户体验看着“很美”

    2009-07-07 12:04:00
  • 基于Python实现迪杰斯特拉和弗洛伊德算法

    2021-06-14 08:07:25
  • 解决Tensorflow安装成功,但在导入时报错的问题

    2022-03-05 18:39:27
  • sql 判断数据库,表,存储过程等是否存在的代码

    2024-01-18 21:59:29
  • asp函数InstrRev()介绍及获取文件名例子

    2007-11-19 19:01:00
  • 在JavaScript中,为什么要尽可能使用局部变量?

    2009-03-01 12:38:00
  • 利用python将图片版PDF转文字版PDF

    2021-07-20 21:22:25
  • 用python实现批量重命名文件的代码

    2023-01-02 09:09:20
  • Laravel框架集合用法实例浅析

    2024-05-11 10:03:44
  • MYSQL事件查看器使用介绍

    2024-01-15 07:33:04
  • python同步两个文件夹下的内容

    2022-09-14 13:54:13
  • 跟老齐学Python之总结参数的传递

    2021-12-16 18:17:24
  • mssqlserver恢复ldf文件数据的方法

    2024-01-22 11:06:54
  • 改善IE6中a与a:hover的背景支持

    2009-11-27 18:50:00
  • 根据表名和索引获取需要的列名的存储过程

    2024-01-23 04:24:14
  • 小谈用户身体语言的阅读经验

    2009-10-19 20:52:00
  • 如何操作Access数据库?

    2009-11-11 19:23:00
  • Python单例模式实例分析

    2023-11-26 03:22:52
  • pytest官方文档解读fixtures的autouse

    2023-06-22 01:18:58
  • vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native

    2023-07-02 17:01:35
  • asp之家 网络编程 m.aspxhome.com