2024/3/1

import tkinter as tk
from tkinter import filedialog

# 定义页面大小(每页显示的字符数)
PAGE_SIZE = 200

class NovelReader:
def __init__(self, root):
self.root = root
self.text = ""
self.current_page = 0
self.pages = []
self.root.title("小说阅读器")

# 设置界面布局
self.setup_gui()

def setup_gui(self):
# 创建文本框用于显示小说内容
self.text_widget = tk.Text(self.root, wrap=tk.WORD)
self.text_widget.pack(expand=True, fill=tk.BOTH)

# 创建菜单栏
menu_bar = tk.Menu(self.root)
self.root.config(menu=menu_bar)

# 创建“文件”菜单
file_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="文件", menu=file_menu)

# 向“文件”菜单添加“打开”选项
file_menu.add_command(label="打开小说", command=self.open_novel)

# 创建“导航”菜单
navigation_menu = tk.Menu(menu_bar, tearoff=False)
menu_bar.add_cascade(label="导航", menu=navigation_menu)

# 向“导航”菜单添加“上一页”和“下一页”选项
navigation_menu.add_command(label="上一页", command=self.previous_page)
navigation_menu.add_command(label="下一页", command=self.next_page)

def open_novel(self):
# 让用户选择要打开的小说文件
filepath = filedialog.askopenfilename()
if filepath:
with open(filepath, 'r', encoding='utf-8') as file:
self.text = file.read()

# 将文本拆分为页面
self.pages = [self.text[i:i+PAGE_SIZE] for i in range(0, len(self.text), PAGE_SIZE)]

# 显示第一页
self.show_page(0)

def show_page(self, page_number):
# 清空文本框
self.text_widget.delete('1.0', tk.END)

# 显示指定页面
if 0 <= page_number < len(self.pages):
self.current_page = page_number
self.text_widget.insert(tk.END, self.pages[page_number])

def previous_page(self):
# 显示前一页
if self.current_page > 0:
self.show_page(self.current_page - 1)

def next_page(self):
# 显示后一页
if self.current_page < len(self.pages) - 1:
self.show_page(self.current_page + 1)

# 创建主窗口
root = tk.Tk()
reader = NovelReader(root)
root.mainloop()
posted @ 2024-03-03 19:51  几条小鱼  阅读(82)  评论(0)    收藏  举报