来自回调 tkinter 的多处理
问题内容
问题是当我想从回调 tkinter(特别是函数 tkinter 的绑定)触发进程“多重处理”时。错误从这里开始:
main.py
from reproductor import mediaplayer def item_selected(event): """ evento invocado cuando el contenido de una carpeta es abierto. """ item_seleccionado = arbol.selection() item = arbol.item(item_seleccionado) print(item) #extraer la ruta del archivo y si encuentra espacios unirlos ruta = "" for element in item["values"]: ruta += element + " " #iniciacion del video global reproductor_video # cerrar el video para que no se abra en multiples ventanas if reproductor_video is not none: reproductor_video.closeplayer() reproductor_video = mediaplayer(ruta, frame_visualizer, frame_botones_procesar, spininicio=inbox_inicio, spinfinal=inbox_fin, spinactual=inbox_actual, mainvideo=true) reproductor_video.update_progres_video() arbol = checkboxtreeview(frame_tree_in) arbol.bind("<<treeviewselect>>", item_selected)
reproductor.py
class MediaPlayer: def __init__(ruta, frame_visualizer, frame_botones_procesar, spinInicio=inBox_inicio, spinFinal=inBox_fin, spinActual=inBox_Actual, mainVideo=True): p = Process(target=self.funcion1) p.start() #p.join def funcion1(self): cont = 0 while cont < 100: cont += 1 print("contador =", cont)
我在主函数中尝试了相同的代码,并且它执行得很好,但是从回调中它不会执行。
正确答案 原版解决方案在这里为那些需要它的人提供,实际上,如果它可以从 tkinter 上的事件启动,如下所示:
翻译(谷歌翻译):解决方案在这里为那些需要它的人提供,事实上它可以从 tkinter 中的事件启动,如下所示:
from multiprocessing import Process, log_to_stderr, get_logger import time from tkinter import Tk from tkinter import ttk import logging import sys def item_selected(event): my_objeto = objeto() button_eraser.config(command=lambda:my_objeto.lanzador(2)) button_marco.config(command=lambda:my_objeto.lanzador(1)) my_objeto.start_player() class objeto: def __init__(self) -> None: #self.start_player() pass def start_player(self): pass def funcion1(self): contador = 0 while 1: contador += 1 print("Func1: ", contador, self.palabra) time.sleep(0.1) if contador > 80: break q = Process(target=self.funcion3) q.start() #q.join() def funcion2(self): contador = 0 while 1: contador += 2 print("Func2: ", contador) time.sleep(0.2) if contador > 120: break def funcion3(self): contador = 0 while 1: contador += 2 print("Func3: ", contador) time.sleep(0.02) if contador > 200: break def lanzador(self,mode): log_to_stderr(logging.DEBUG) logger = get_logger() logger.setLevel(logging.INFO) if mode == 1: self.p = Process(target=self.funcion1) self.p.start() elif mode == 2: self.p = Process(target=self.funcion2) self.p.start() def unir(self): self.p.join() print("Salio") def iniciar_multis(self): self.lanzador(2) self.lanzador(1)
声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至201542412@QQ.com举报,一经查实,本站将立刻删除。
相关推荐
-
PyCharm打不开怎么办?快速解决方案大揭秘
PyCharm是一款功能强大的Python集成开发环境,但有时候会出现打不开的情况,可能是由于各种原因引起的。如果你遇到了PyCharm打不开的问题,不要慌张,本文将为你揭秘快速解决方案,并提供具体的
-
常见问题与解决方案:掌握Go语言开发网站的关键信息
掌握Go语言开发网站的常见问题与解决方案导语:随着互联网的快速发展,网站已经成为企业展示产品与服务的重要平台。而Go语言由于其高效性、并发性和简洁性,成为了很多开发人员的首选语言。然而,在Go语言开发
-
高效的PDF转Word文档解决方案在Go语言中
标题:Go语言中PDF转word文档的高效解决方案正文:在日常办公中,我们经常需要将PDF文档转换成Word文档,以便进行编辑或进一步处理。在Go语言中,我们可以使用第三方库或直接使用系统命令来实现P
-
使用Go语言进行PDF到Word文档转换的高效解决方案
使用Go语言将PDF转换为Word文档的完善方案前言PDF和Word都是常用的文档格式,在不同的场景下,我们需要在它们之间进行转换。Go语言提供了丰富的库和工具,可以帮助我们轻松实现PDF到Word的
-
Python中lambda函数技巧的快速学习
快速学习Python中lambda函数的应用技巧,需要具体代码示例在Python编程语言中,lambda函数是一种基于表达式的匿名函数,可以简化编码过程,提高代码的可读性和可维护性。本文将介绍lamb