Enseñarle cómo hacer un lector de novelas simple con Python

/Prefacio/

No sé cuando empezó. Las novelas han comenzado a desatar una ola, hacen que nuestra vida diaria ya no sea aburrida, y muchas cosas que no podemos hacer se pueden lograr fácilmente en las novelas.

Mucha gente aprende Python y no sabe por dónde empezar.
Mucha gente aprende Python y después de dominar la gramática básica, no saben dónde encontrar casos para comenzar.
Muchas personas que han realizado estudios de casos no saben cómo adquirir conocimientos más avanzados.
Para estos tres tipos de personas, les proporcionaré una buena plataforma de aprendizaje, ¡gratis para recibir tutoriales en video, libros electrónicos y código fuente del curso! ?? ¤
Grupo QQ: 232030553

Lo que vamos a hacer hoy es un lector novedoso, un lector que puede mostrar las palabras de su artículo cada pocos segundos, como si fuera una lectura normal en un teléfono móvil, ¿no es interesante? Entonces, echemos un vistazo a cómo se implementa en detalle a continuación.

/Implementación/

Para un lector novel, por supuesto que la interfaz es indispensable, comencemos a escribir la interfaz.

1. Primero importe los paquetes que necesitamos usar.

tiempo de importación
desde el cuadro de mensaje de importación de tkinter
importar tkinter como t
desde tkinter import ttk
desde el diálogo de archivo de importación de tkinter
desde tkinter import simpledialog
Copiar codigo

2. Escribe la interfaz principal

clase gui:
    def __init __ (yo):
        self.root = t.Tk ()
        self.root.title ('Fiction Reader V1.0') # Nombre de la ventana
        self.root.geometry ("700x700") #Establecer el tamaño de la ventana
        self.root.wm_attributes ('- topmost', 1) #Ventana en la parte superior
        self.root.wm_minsize (140, 170) # Establece el tamaño mínimo de la ventana
        self.root.wm_maxsize (1440, 2800) # Establecer el tamaño máximo de la ventana
        self.root.resizable (width = False, height = True) # Establecer el ancho de la ventana para que sea inmutable y la altura para que sea variable
        self.te = t.Text (self.root, width = 60, height = 40) # Cuadro de texto multilínea
        self.b1 = t.Button (self.root, text = 'Abrir archivo', font = ("Song Ti", 10, 'bold'), command = self.open_file)
        self.cb = ttk.Combobox (self.root, width = 12) # cuadro de lista desplegable
        self.b2 = t.Button (self.root, text = 'borrar contenido', comando = self.clean) #button
        self.l1 = t.Label (self.root, text = 'Seleccione la velocidad de lectura:') #label
        self.cb ['valores'] = ('Seleccione -----', 'leer todo', 'una fila por segundo', 'fila de dos segundos', 'personalizado') #Establecer el contenido de la gota- cuadro de lista abajo   
        self.cb.current (0) # Establece el estado de selección actual en 0, que es el primer elemento
        self.cb.bind ("<<ComboboxSelected>>", self.go) #Enlazar la función go, y luego activar el evento
        self.b1.place (x = 30, y = 30)
        self.b2.place (x = 360, y = 26)
        self.l1.place (x = 130, y = 30)
        self.te.place (x = 30, y = 60)
        self.cb.place (x = 230, y = 30)
        self.root.mainloop ()
Copiar codigo

3. Escriba el código para abrir el cuadro de diálogo del archivo.

def archivo_abierto (yo):
        self.file = filedialog.askopenfilename (title = 'Abrir archivo', tipos de archivo = [('Archivo de texto', '*. txt'), ('Todos los archivos', '*')])
        volver self.file
Copiar codigo

Esto abre el archivo encabezado por el archivo de texto.

4. Seleccione el archivo abierto para leer

self.ff = open (self.file, 'r', encoding = 'utf8')
aa = self.ff.read ()
Copiar codigo

5. Elimina todos los espacios en el contenido del archivo.

self.ab = aa.replace ('\ n', ''). replace ('\ t', ''). strip ()
Copiar codigo

6. Realice la función de cada opción en la lista desplegable.

if self.cb.get () == 'Por favor, elija -----':
            pasar
        elif self.cb.get () == 'Leer todo':
            si self.ab:
                self.te.insert ('insertar', self.ab) #Insertar contenido
                self.te.update () #Actualizar contenido
            más:
                self.ff.close ()
        elif self.cb.get () == 'Una línea por segundo':
            para y en rango (len (self.ab)): # contenido del archivo transversal
                si self.ab:
                    self.te.insert ('insertar', self.ab [y]) #Insertar contenido
                    si y% 10 == 0 y y! = 0: # Juzgando si se lee la longitud de diez palabras, inserte el contenido del texto en el cuadro de texto y ajuste
                        self.te.insert ('insertar', '\ n') #Insertar salto de línea
                        self.te.update () #Actualizar contenido
                    más:
                        time.sleep (0.1) #Muestra uno cada 0.1 segundos, diez caracteres en una línea, puede obtener una línea por segundo
                más:
                    self.ff.close () #Cerrar el archivo
        elif self.cb.get () == 'Una línea en dos segundos':
            para y en rango (len (self.ab)):
                si self.ab:
                    self.te.insert ('insertar', self.ab [y])
                    si y% 10 == 0 y y! = 0:
                        self.te.insert ('insertar', '\ n')
                        self.te.update ()
                    más:
                        tiempo. de sueño (0,2)
                más:
                    self.ff.close ()
        elif self.cb.get () == 'Personalizado':
            res = simpledialog.askinteger (title = 'por favor ingrese', prompt = 'lea una línea en unos segundos:', initialvalue = '')
            para y en rango (len (self.ab)):
                si self.ab:
                    self.te.insert ('insertar', self.ab [y])
                    si y% 10 == 0 y y! = 0:
                        self.te.insert ('insertar', '\ n')
                        self.te.update ()
                    más:
                        time.sleep (res / 10)

                más:
                    self.ff.close ()
Copiar codigo

De esta manera, se genera una línea cada diez bytes por segundo. Por supuesto, también puede generarla palabra por palabra. Si es así, simplemente cambie el siguiente código:

para y en rango (len (self.ab)): # contenido del archivo transversal
                si self.ab:
                    self.te.insert ('insertar', self.ab [y]) #Insertar contenido
                    si y% 10 == 0 y y! = 0: # Juzgando si se lee la longitud de diez bytes, inserte el contenido del texto en el cuadro de texto
                        self.te.insert ('insertar', '\ n')
                        self.te.update () #Actualizar contenido
                    más:
                        tiempo. de sueño (0.1)
Copiar codigo

A:

para y en rango (len (self.ab)): # contenido del archivo transversal
                si self.ab:

                    si y% 10 == 0 y y! = 0: # Juzgando si se lee la longitud de diez bytes, inserte el contenido del texto en el cuadro de texto
                        self.te.insert ('insertar', '\ n')
                    más:
                        self.te.insert ('insertar', self.ab [y]) #Insertar contenido
                        self.te.update () #Actualizar contenido
                        tiempo. de sueño (0.1)
Copiar codigo

8. Contenido claro

def clean (auto):
    self.te.delete ('1.0', t.END) #Borrar todo el contenido del cuadro de texto
Copiar codigo

Esto se puede lograr.

Echemos un vistazo a los efectos específicos:

De esta manera, hemos implementado fácilmente un lector novedoso. Por cierto, si quieres mostrar algunos caracteres más en una línea, solo necesitas modificar el número en la siguiente línea:

si y% 10 == 0 y y! = 0:
Copiar codigo

Cambie 10 a otro número, y mostrará caracteres de la longitud correspondiente.

/resumen/

Basado en la biblioteca de Python, este artículo escribe una interfaz gráfica visual, crea un lector novedoso simple y realiza un lector novedoso con un tamaño de carácter personalizado. Eso es todo para compartir hoy. Invitamos a todos a probar.

Supongo que te gusta

Origin blog.csdn.net/Python_sn/article/details/113108623
Recomendado
Clasificación