第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PyQt5:GraphicsScene的所有項目的坐標(biāo)都是0.0

PyQt5:GraphicsScene的所有項目的坐標(biāo)都是0.0

PIPIONE 2023-07-27 16:25:15
我使用了以下源代碼并對其進行了一些修改,以獲得以下迷你示例:import sysfrom PyQt5 import QtCore, QtWidgetsclass GraphicsScene(QtWidgets.QGraphicsScene):? ? def __init__(self):? ? ? ? super(GraphicsScene, self).__init__()? ? ? ? self.setSceneRect(0, 0, 600, 400)? ? def mousePressEvent(self, event):? ? ? ? if event.buttons() == QtCore.Qt.LeftButton:? ? ? ? ? ? x = event.scenePos().x()? ? ? ? ? ? y = event.scenePos().y()? ? ? ? ? ? self.addRect(x, y, 100, 100)? ? ? ? elif event.buttons() == QtCore.Qt.RightButton:? ? ? ? ? ? for elem in self.items():? ? ? ? ? ? ? ? print(elem.x())? ? ? ? super(GraphicsScene, self).mousePressEvent(event)if __name__ == '__main__':? ? app = QtWidgets.QApplication(sys.argv)? ? scene = GraphicsScene()? ? w = QtWidgets.QGraphicsView(scene)? ? w.resize(610, 410)? ? w.show()? ? sys.exit(app.exec_())這個想法是,通過單擊鼠標(biāo)左鍵創(chuàng)建新的矩形(這已經(jīng)有效)并通過單擊鼠標(biāo)右鍵刪除最近的矩形。我知道如何找到最近的矩形,但為此我需要現(xiàn)有矩形的坐標(biāo)。如果我們向場景添加一個新的矩形,我們將執(zhí)行以下操作:self.addRect(x, y, 100, 100)但是如果我迭代場景中的所有元素,并嘗試使用以下方法獲取元素的 x 坐標(biāo):? ? for elem in self.items():? ? ? ? print(elem.x())? ? ? ? print(elem.pos().x())? ? ? ? print(elem.scenePos().x())那么所有的打印輸出都為零。我已經(jīng)看過文檔,但據(jù)我了解,我正在按照文檔的建議進行操作。你知道我做錯了什么嗎?編輯:當(dāng)然,我可以將所有坐標(biāo)保存在附加列表中,使用該列表中的值計算最近的矩形,使用以下方法刪除每個矩形:? ? for elem in self.items():? ? ? ? self.removeItem(elem)并繪制剩余的矩形。不過,我希望有一個更干凈的版本。:)
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

正如文檔所解釋的:

請注意,項目的幾何形狀在項目坐標(biāo)中提供,并且其位置初始化為 (0, 0)。例如,如果添加 QRect(50, 50, 100, 100),則其左上角將位于相對于項目坐標(biāo)系中原點的 (50, 50) 處。

所以有兩個選擇:

  • 在位置 (0, 0) 添加一個具有指定大小的矩形,然后將其移動到所需的位置:

????rectItem?=?self.addRect(0,?0,?100,?100)
????rectItem.setPos(x,?y)
  • 使用 addRect 中的坐標(biāo)并根據(jù)矩形的左上角獲取實際位置:

????for?elem?in?self.items():
????????pos?=?elem.pos()?
?????if?isinstance(elem,?QtWidgets.QGraphicsRectItem):
????????????pos?+=?elem.rect().topLeft()


查看完整回答
反對 回復(fù) 2023-07-27
  • 1 回答
  • 0 關(guān)注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號