为什么部分超出视图的矩形会被绘制成三角形?

16

我使用 PySide 中的 Python-Qt 绑定,并且我想绘制一个场景,其中包括一个矩形,但该矩形并不完全可见,因为视图应该只显示该场景中未完全包含矩形的部分。

这是一个简单的示例:

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_()

我本来期望看到矩形的下半部分,但实际上看到的是三角形的下半部分!

enter image description here

似乎没有考虑矩形的右下角。

只有特殊情况(比如示例中的特殊场景矩形)才会出现这种三角形,如果完整的矩形可见,则永远不会出现。

这是一个bug还是我的问题?能否修复?

我的系统:Python 3.3 + PySide 1.2.2(64位)在Windows 7上。


@vahancho 因为它显示了-60的三角形。它并不总是这样做。我会稍微更新一下问题,加入这些信息。 - Trilarion
2
这绝对是一个 bug!向 Qt 报告它! - Marek R
1
就此而言:您的示例在PyQt 4.9.6(Qt 4.8.4)和Python 2.7中完全正常运行。 - sebastian
1
好的,似乎是一个bug。我会向PySide提交它。 - Trilarion
2
@Trilarion 顺便提一下,将错误报告的链接放在这里会帮助潜在的谷歌用户,这是个好主意。 - Veedrac
显示剩余5条评论
4个回答

0

尝试:

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()

1
你遇到的是一个错误。 - Gwendal Delisle Arnold

0

我有同样的问题。如果您使用GL小部件,则可以解决它:

from PySide import QtOpenGL
view.setViewport(QtOpenGL.QGLWidget())

(在Windows 7上)Python 2.7.6,PySide 1.2.1 x64(Qt 4.8.5)


0

这是一个错误,目前已经修复,至少对于某些Qt和Python的组合。

我现在使用的是Windows 10,Python 3.5,PyQt5,矩形被显示为矩形。

很难确定PySide/PyQt和Qt 4.X或5.x以及Python 2.X或3.X或Windows、Linux、Mac等哪些版本存在该错误。我没有报告过这个错误,但我猜想,由于现在我的环境下可以正常工作,所以该错误可能不是任何人的首要问题,或者可能已经被修复了。


0

尝试用编程绘制矩形

import pygame

pygame.draw.rect(x, y, width, length)

看看是否有效。 这绝对是一个bug,所以绕过它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接