gpt4 book ai didi

python - 如何在 PyQt 中使用 QRubberBand 和 QRect 类?

转载 作者:行者123 更新时间:2023-11-28 19:50:07 25 4
gpt4 key购买 nike

我想在 PyQt 中使用 QRubberBand 和 QRect 通过选取框矩形选择来选择或激活一堆按钮。

如果有人能告诉我如何实现此功能,我将不胜感激?

最佳答案

这是一个简单的演示:

from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
layout = QtGui.QVBoxLayout(self)
layout.setMargin(15)
layout.setSpacing(10)
for text in 'One Two Three Four Five'.split():
layout.addWidget(QtGui.QPushButton(text, self))
self.rubberband = QtGui.QRubberBand(
QtGui.QRubberBand.Rectangle, self)
self.setMouseTracking(True)

def mousePressEvent(self, event):
self.origin = event.pos()
self.rubberband.setGeometry(
QtCore.QRect(self.origin, QtCore.QSize()))
self.rubberband.show()
QtGui.QWidget.mousePressEvent(self, event)

def mouseMoveEvent(self, event):
if self.rubberband.isVisible():
self.rubberband.setGeometry(
QtCore.QRect(self.origin, event.pos()).normalized())
QtGui.QWidget.mouseMoveEvent(self, event)

def mouseReleaseEvent(self, event):
if self.rubberband.isVisible():
self.rubberband.hide()
selected = []
rect = self.rubberband.geometry()
for child in self.findChildren(QtGui.QPushButton):
if rect.intersects(child.geometry()):
selected.append(child)
print 'Selection Contains:\n ',
if selected:
print ' '.join(
'Button: %s\n' % child.text() for child in selected)
else:
print ' Nothing\n'
QtGui.QWidget.mouseReleaseEvent(self, event)

if __name__ == '__main__':

import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

关于python - 如何在 PyQt 中使用 QRubberBand 和 QRect 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com