【问题标题】:Why is a rectangle partly outside of view drawn as a triangle?为什么一个矩形部分在视图之外绘制为三角形?
【发布时间】:2014-11-12 12:47:32
【问题描述】:

我使用来自 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_()

我希望看到的是矩形的下半部分,而不是三角形的下半部分!

好像没有考虑矩形的右下角。

三角形仅在特殊情况下出现(如示例中的特殊场景矩形),如果整个矩形可见,则不会出现。

这是一个错误还是我做错了什么?可以修吗?

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

【问题讨论】:

  • 错误是否随着view.setSceneRect(-10, -10, 120, 120) 而消失?
  • 这绝对是一个错误!报告给 Qt!
  • FWIW:您的示例适用于 PyQt 4.9.6 (Qt 4.8.4) 和 python 2.7。
  • 好吧,好像是个bug。我会用 PySide 归档。
  • @Trilarion 顺便说一下,在此处链接错误报告以帮助潜在的 Google 员工是个好主意。

标签: python qt pyside qgraphicsview


【解决方案1】:

尝试绘制矩形

import pygame

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

看看这是否有效。这绝对是一个错误,所以要解决它。

【讨论】:

    【解决方案2】:

    遇到了同样的问题。如果您使用 GL 小部件,它就可以工作:

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

    (Windows 7 上的 Python 2.7.6、PySide 1.2.1 x64 (Qt 4.8.5))

    【讨论】:

      【解决方案3】:

      试试:

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

      【讨论】:

      • 对你来说是一个错误
      【解决方案4】:

      这是一个错误,并且在此期间已修复,至少对于 Qt 和 Python 的某些组合而言。

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

      很难找出 PySide/PyQt 和 Qt 4.X 或 5.x 和 Python 2.X 或 3.X 或 Windows、Linux、Mac 的哪些版本存在,哪些不存在。我没有 erport 错误,但我想因为它现在可以与我的错误一起工作,所以对于任何人来说都不是首要任务和/或可能已经修复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多