/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.