una - turtle python examples
¿Por qué un rectángulo parcialmente fuera de la vista se dibuja como un triángulo? (4)
Utilizo los enlaces Python-Qt de PySide y quiero dibujar una escena con, entre otros, un rectángulo y el rectángulo no está completamente visible porque la vista solo debe mostrar una parte de la escena donde el rectángulo no está completamente contenido.
Aquí hay un ejemplo mínimo:
from PySide.QtGui import *
app = QApplication([])
scene = QGraphicsScene()
scene.addRect(0, 0, 100, 100)
view = QGraphicsView(scene)
view.setSceneRect(-60, 20, 100, 100)
view.show()
app.exec_()
¡Espero ver la parte inferior de un rectángulo en lugar de ver la parte inferior de un triángulo!
Parece que la esquina inferior derecha del rectángulo no se tiene en cuenta.
El triángulo solo aparece para casos especiales (como la escena especial rect en el ejemplo) y nunca aparece si el rectángulo completo está visible.
¿Es esto un error o estoy haciendo algo mal? ¿Se puede arreglar?
Mi sistema: Python 3.3 + PySide 1.2.2 (64 bits) en Windows 7
Fue un error y se corrigió mientras tanto, al menos para algunas combinaciones de Qt y Python.
Ahora uso Windows 10, Python 3.5, PyQt5 y el rectángulo se muestra como un rectángulo.
Es difícil averiguar para qué versiones de PySide / PyQt y Qt 4.X o 5.x y Python 2.X o 3.X o Windows, Linux, Mac ... el error está presente y para el que no. No informé el error pero supongo que, como funciona ahora, con el error que tengo no sería la máxima prioridad para nadie y / o puede que ya esté solucionado.
Intenta dibujar el rectángulo con
import pygame
pygame.draw.rect(x, y, width, length)
A ver si eso funciona. Esto es definitivamente un error, así que trabaja alrededor de él.
Tenía el mismo problema. Funciona si usas un widget GL:
from PySide import QtOpenGL
view.setViewport(QtOpenGL.QGLWidget())
(Python 2.7.6, PySide 1.2.1 x64 (Qt 4.8.5) en Windows 7)
Tratar :
import pygame
from livewires import *
rectangle = rect(x, y, width, height) #note that the size is in pixels
while not keyboard.is_pressed(K_escape)
rectangle.erase()
rectangle.draw()
screen.update()