tkinter 小说编写器,文本编辑器,小说阅读器

tkinter 小说编写器

该软件借鉴了网上许多大神的代码片

感谢这些无私奉献的人

此软件可用于小说编写,笔记记事

小说内容朗读,停止等功能

代码无注释, 需对编程有一定的了解

作者: 吴年和

此软件无须数据库

具备爬虫能力(功能已阉割)

播放语音朗读需自行提供百度api秘钥

在这里插入图片描述

# coding: utf-8
import json, easygui
import shutil
import pygame.time
import pygame.mixer as mixer
import tkinter as tk
import os, requests, time, threading
import tkinter.messagebox

from tkinter.ttk import Combobox
from tkinter import *
from tkinter import scrolledtext
from aip import AipSpeech
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor

themes = {
   
    "黑夜": {
   "novelListColor": "#212226", "chaptersListColor": "#303339", "bookContentColor": "#303339",
           "fontColor": "#9198A5", "otherCanvas": "#303339", "fontStyle": "simhei"},
    "白天": {
   "novelListColor": "#fffafa", "chaptersListColor": "#ffffff", "bookContentColor": "#ffffff",
           "fontColor": "#111111", "otherCanvas": "#ffffff", "fontStyle": "simhei"}
}

if not os.path.exists("easyNoteTheme.json"):
    theme = themes["黑夜"]
else:
    with open("easyNoteTheme.json", encoding="utf-8") as r:
        temp = r.read()
        theme = json.loads(temp.replace("'", "\""))


def getFileNames(path):
    arr = []
    if os.path.exists(path):
        for root, dirs, files in os.walk(path):
            arr.append((dirs, files))
    return arr


bookpath = "./books"
if not os.path.exists(bookpath):
    os.makedirs(bookpath)


class NovelReading:
    def __init__(self):
        self.headers = {
   
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"}
        self.lastTime = 0
        self.interval = 0.1
        self.fileSuffixs = []
        self.mainWindow = tk.Tk()
        self.screenWidth = int(self.mainWindow.winfo_screenwidth() * 0.7)
        self.screenHeight = int(self.mainWindow.winfo_screenheight() * 0.7)
        self.relX = int(self.screenWidth * 0.24)
        self.relY = int(self.screenHeight * 0.15)
        self.mainWindow.geometry(f"{self.screenWidth}x{self.screenHeight}+{self.relX}+{self.relY}")
        self.mainWindow.title("EasyNote")
        self.playState = False
        self.mainWindow.grid_rowconfigure(0, weight=1)
        self.mainWindow.grid_columnconfigure(0, weight=1)
        self.mainWindow.grid_columnconfigure(2, weight=20)

        self.novelListX = tk.Scrollbar(self.mainWindow, orient=tk.HORIZONTAL)
        self.chaptersListX = tk.Scrollbar(self.mainWindow, orient=tk.HORIZONTAL)

        self.novelList = Listbox(self.mainWindow, background=theme["novelListColor"], foreground=theme["fontColor"],
                                 xscrollcommand=self.novelListX.set,
                                 font=(theme["fontStyle"], 20), selectborderwidth=10)

        self.chaptersList = Listbox(self.mainWindow, background=theme["chaptersListColor"],
                                    xscrollcommand=self.chaptersListX.set,
                                    foreground=theme["fontColor"], font=(theme["fontStyle"], 19), selectborderwidth=5)

        self.bookContent = scrolledtext.ScrolledText(self.mainWindow, background=theme["bookContentColor"], bd=0,
                                                     font=(theme["fontStyle"], 18), foreground=theme["fontColor"],
                                                     undo=True)
        self.bookpath = ""
        self.chapterPath = ""
        books = getFileNames(bookpath)
        self.bookNames = books[0][0]
        mixer.init()
        self.initBooks()
        self.initMenu()

    # 判断是否到达执行时间
    def isActionTime(self, lastTime, interval):
        if lastTime == 0:
            return True
        currentTime = time.time()
        return currentTime - lastTime >= interval

    def selectNovel(self, event):
        books = getFileNames(bookpath)
        self.bookNames = books[0][0]
        num = self.novelList.curselection()
        if num.__len__() < 1:
            return
        num = num[0]
        books = self.novelList.get(0, self.novelList.size())
        self.bookpath = f"{bookpath}/{books[num]}"
        self.chapters = getFileNames(self.bookpath)[0][1]
        self.chaptersList.delete(0, END)
        self.bookContent.delete(1.0, END)
        self.fileSuffixs = []

        def convert(item):
            cn_map = dict(zip(['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值