-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Shortcuts inactivos en primer turno (Bonus Cheatcode) #340
Comments
Hola con respecto a los QShortcuts de esta pregunta, también me gustaría preguntar como se puede implementar para dos letras diferentes, cuando es con cosas como Qt.CTRL + Qt.Key_P no tengo problema, pero cuando intento hacer Qt.Key_A + Qt.Key_F no funciona. ¿Me podrían explicar como se debe implementar? Como la documentación no está en python me ha costado mucho hacer esto :C |
Hola! @narispe Necesitaría un poco más de contexto sobre tu código. Súbelo a tu repositorio e indícame qué líneas son las importantes. Un problema random que se me ocurre, es el del focus, es posible que si el tema de turnos lo gestionas modificando atributos de los botones, por alguna razón el "foco" del teclado cambie al botón y al presionar las teclas no las recibe el event handler de pyqt. Si te parece muy abstracto lo del foco, puedes entenderlo así: Clickea la barra de URL del navegador, si escribes algo el teclado lo hará ahí porque es su foco actual. Ahora pulsa la tecla TAB un par de veces, o todas las que quieras, verás como el "foco" va cambiando respecto a todos los elementos de la página. Para más info te recomiendo googlearlo, y un buen punto de partida sería: esta pregunta de stack overflow @diegocostares Sobre tu problema, no sé por qué no te funciona, pero te dejo abajo un snippet de código que a mí sí me sirve. Printeará toda tecla y combinaciones que reciba, y si recibe la combinación puesta en import sys
import PyQt5
from PyQt5 import QtGui
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QShortcut, QWidget, QApplication
class MiVentana(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(200, 100, 300, 300)
self.setWindowTitle('Ventana de prueba')
self.shortcut = QShortcut(QtGui.QKeySequence(Qt.Key_A, Qt.Key_F), self)
self.shortcut.activated.connect(self.combinacion_teclas)
def keyPressEvent(self, key: QtGui.QKeyEvent) -> None:
print("pressed key:", key.key())
def combinacion_teclas(self):
print("Combinación de teclas")
if __name__ == '__main__':
def hook(type, value, traceback):
print(type)
print(traceback)
sys.__excepthook__ = hook
app = QApplication([])
ventana = MiVentana()
ventana.show()
app.exec() Coméntenme si les fue de ayuda, y si siguen con dudas del mismo tema. 🚀 |
@fernandosmither Modifique mi código para considerar el focus y ahora funciona el programa como debería en el primer turno. Justamente antes de mostrar al ventana modificaba varios de sus elementos y parece que eso causaba que el foco cambiara. Gracias por la ayuda. |
Hola @fernandosmither hice literalmente lo mismo, pero no me está funcionando... no sé si es tema de mac o que... te agradecería si pudieras echarle una mirada rápida a mi código, está en mi línea 44 de mi ventana de juego. (Hay un name == "main" con el que se puede ejecutar de forma comoda) |
Logré utilizar en una de las ventanas una de las combinaciones de teclas que añadiste. Efectivamente veo un problema con el focus, por lo que te recomiendo que cambies la focus policy, y además veas si puedes utilizar el método Ya que no tengo mac no puedo responderte sobre esa plataforma, sin embargo, me parecería extraño que ese fuese el motivo de que no funcionara. (Podrías bajar tu código en una máquina con otro OS, o virtualizar uno y probarlo). Ve si con lo que te dije logras solucionarlo, y avísame como te va! |
No logro entender el funcionamiento del setFocus(), ¿Cómo debería hacerlo? |
Te recomiendo en el init, al widget principal de la ventana cambiarle la ¿Pudiste solucionar el problema de que PyQt no te detectaba las combinaciones de teclas? |
Hola, logre hacer que funcionara cambiando el focusPolicy desde designer, seleccionando ClickFocus en los elementos que el jugador debe interactuar. Muchas gracias. |
@diegocostares Excelente! Gracias por compartirlo, para que compañeros con tu mismo problema puedan arreglarlo. |
Duda
Hola, tengo un problema con la conexión de los shortcuts de mi ventana de juego para implementar el bonus de cheatcode. Durante el primer turno la función que conecto al
activated
de losQShortcuts
no se llama al presionar los shortcuts para ningún jugador, pero al comenzar el segundo turno la conexión funciona correctamente y sin problemas. No tengo idea de porque pasa eso y también me gustaría saber si este bug impedirá que pueda tener el puntaje del bonus.The text was updated successfully, but these errors were encountered: