PyQT5 размещение графического виджета
Как разместить в данном коде виджет, чтобы на нем передвигать графические элементы при нажатии на клавишу (например стрелок) ?
import sys
from PyQt5.QtWidgets import QWidget, QMainWindow, QApplication
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
StyleSheet = """
QMainWindow{
border-image: url(11.png) 0 0 0 0 stretch stretch;
}
"""
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
w = MainWindow()
w.setWindowTitle("Title MainWindow")
w.resize(702, 343)
w.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
То, что вы задумали, может выглядеть примерно так. Нажимайте на стрелочки.
from PyQt5.Qt import *
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.setFixedSize(700, 400)
self.setMouseTracking(True)
self.x = 300
self.y = 200
def up(self):
self.update()
def keyPressEvent(self, event):
if event.key() == Qt.Key_Left:
self.x -= 5
elif event.key() == Qt.Key_Right:
self.x += 5
elif event.key() == Qt.Key_Up:
self.y -= 5
elif event.key() == Qt.Key_Down:
self.y += 5
QTimer.singleShot(100, self.up)
def paintEvent(self, event):
if self.x <= -45:
self.x = 725
elif self.x >= 725:
self.x = -45
if self.y <= -25:
self.y = 415
elif self.y >= 415:
self.y = -25
self.qp = QPainter()
self.qp.begin(self)
self.drawFlag()
self.qp.end()
def drawFlag(self):
self.qp.setBrush(QColor(150, 75, 0))
self.qp.drawEllipse(self.x, self.y, 50, 20)
self.qp.setBrush(QColor(0, 255, 255))
self.qp.drawEllipse(self.x + 10, self.y - 10, 30, 20)
StyleSheet = """
QMainWindow{
border-image: url(i-700x400.jpg) 0 0 0 0 stretch stretch;
}
"""
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
w = Example()
w.show()
sys.exit(app.exec_())
