Olá, pessoal. Por enquanto só o título do tópico em espanhol, quem sabe eu crie mais coragem.
Bom, estou tentando alinhar o marcador de pontos do meu jogo nessas guias vermelhas. Consegui uma solução muito improvisada, mas ainda tenho problemas de alinhamento (quando a pontuação aumenta, o número se desloca um pouco).
Pergunto, qual a maneira adequada de alinhar texto à direita?
Olá @AlexPHorta, infelizmente não há uma maneira fácil de alinhar os textos à direita. No entanto, eu montei um “patch” para que você possa forçar o alinhamento para a direita.
Eu construí uma função chamada “text_patch” que desenha os textos alinhados à direita e “conecta-os” ao objeto Text desta maneira texto.imagen.__class__.texto = texto_patch
Aqui está o exemplo completo:
# coding: utf-8
import pilasengine
from PyQt4 import QtGui
from PyQt4 import QtCore
pilas = pilasengine.iniciar()
def texto_patch(self, cadena, x=0, y=0, magnitud=10, fuente=None,
color=colores.negro, ancho=0, vertical=False):
self.canvas.begin(self._imagen)
color = colores.generar_color_desde_texto(color)
r, g, b, _ = color.obtener_componentes()
self.canvas.setPen(QtGui.QColor(r, g, b))
dx = x
dy = y
if fuente:
nombre_de_fuente = self.cargar_fuente(fuente)
else:
nombre_de_fuente = self.canvas.font().family()
if not ancho:
flags = QtCore.Qt.AlignRight | QtCore.Qt.AlignTop
ancho = self._imagen.width()
else:
flags = QtCore.Qt.AlignRight | QtCore.Qt.TextWordWrap | QtCore.Qt.AlignTop
font = QtGui.QFont(nombre_de_fuente, magnitud)
self.canvas.setFont(font)
if vertical:
lineas = [t for t in cadena]
else:
lineas = cadena.split('\n')
for line in lineas:
r = QtCore.QRect(dx, dy, ancho, 2000)
rect = self.canvas.drawText(r, flags, line)
dy += rect.height()
self.canvas.end()
# Aplicando patch a un texto
texto = pilas.actores.Texto("0", ancho=200)
texto.imagen.__class__.texto = texto_patch
texto.texto = "0"
def cuando_cambia(valor):
texto.texto = str(int(valor * 3333))
deslizador = pilas.interfaz.Deslizador(y=-100)
deslizador.conectar(cuando_cambia)
pilas.ejecutar()
Abraço!
Olá, @hugoruscitti! Obrigado pela ajuda, estive um tempo longe do jogo, então não havia visto sua resposta. Vou aplicar esse patch durante o fim de semana e testar. Ótimo!