Quantcast
Channel: Preguntas activas con las etiquetas pyqt - Stack Overflow en español
Viewing all articles
Browse latest Browse all 77

Al hacer click en un botón, mi código bloquea la interfaz entera

$
0
0

Al hacer click en un botón, mi código bloquea la interfaz entera.

Este es mi código:

from pynput.keyboard import Key, Listenerfrom pynput.keyboard import Key, Controllerfrom pynput import keyboard as kbimport timeimport sysfrom PySide6.QtUiTools import QUiLoaderfrom PySide6.QtWidgets import QApplication, QDialogfrom PySide6.QtCore import QFileclass EasyKey:    def __init__(self):        super(EasyKey, self).__init__()        self.ui = QUiLoader().load(QFile("Edit.ui"))        self.ui.Apply.clicked.connect(self.iniciar)  # llamada a al funcion iniciar    def iniciar(self):        teclashu = Controller()        tecla = Controller()        selecion = (            self.ui.HotkeyNum.text()        )  # varibles guardadas por datos introducidos por el usuario        selecion_2 = selecion.swapcase()        edic = self.ui.editionNum.text()        selec = self.ui.EditionSelecNum.text()        delay = int(self.ui.DelayNum.text())        delay = delay / 1000        def edit(key):  # funcion que recibe un parametro de teclado ingresado            if (key == kb.KeyCode.from_char(selecion)) or (                key == kb.KeyCode.from_char(selecion_2)            ):  # Si "key" ingresado por el usario es igual a la variable asignada por el usuario                tecla.press(edic)                time.sleep(delay)                teclashu.press(selec)                time.sleep(delay)            if key == Key.delete:                return False        def soltar(key):            if key == kb.KeyCode.from_char(selec):                tecla.release(edic)                time.sleep(delay)                teclashu.release(selec)                time.sleep(delay)        with Listener(            on_press=edit, on_release=soltar        ) as listener:  # ojente por teclado que llama a las funciones cada ves que se cumple la condicion del "key"            listener.join()if __name__ == "__main__":    app = QApplication(sys.argv)    myapp = EasyKey()    myapp.ui.show()    sys.exit(app.exec())

Esto sería el programa:

introducir la descripción de la imagen aquí

Introduzco valores en las columnas de la izquierda, y pulso en Apply entonces se queda colgado..

No domino mucho Python, pero esto en C# se puede solucionar con un thread o un background worker. El caso es que en Python no conozco la forma de hacer eso.

Como puedo hacer para que no se bloquee al hacer click?


Viewing all articles
Browse latest Browse all 77

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>