sanya84
@sanya84
Фанатик Python 3

Как изменить размер прозрачного окна?

Есть такой скрипт:
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QDesktopWidget, QMessageBox
from PyQt5.QtWidgets import QTextBrowser, QGridLayout, QLabel, QCheckBox, qApp
from PyQt5.QtCore import QPoint, QObject, QThread, pyqtSignal, QRect, QSize, QTimer
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPalette, QBrush, QImage, QCursor
from PIL import Image, ImageDraw


# Отловить ошибки в слотах PyQt5
def log_uncaught_exceptions(ex_cls, ex, tb):
    text = '{}: {}:\n'.format(ex_cls.__name__, ex)
    import traceback
    text += ''.join(traceback.format_tb(tb))

    print(text)
    QMessageBox.critical(None, 'Упс! Ошибочка...', text)
    quit()
sys.excepthook = log_uncaught_exceptions


class DisplayWindow(QWidget):
	def __init__(self):
		super().__init__()
		self.interface()
	def interface(self):
		self.setWindowFlags(Qt.Window | Qt.FramelessWindowHint)
		self.setWindowFlag(Qt.WindowStaysOnTopHint)
		self.setGeometry(200, 200, 300, 535)

		image = Image.new(mode='RGBA', size=(300, 535))

		draw = ImageDraw.Draw(image)
		draw.rectangle((0, 0, 300, 535),outline='blue', width=5)
		print(image.size[0])
		del draw

		pixmap = QPixmap(image.toqpixmap())
		palette = self.palette()
		palette.setBrush(QPalette.Normal, QPalette.Window, QBrush(pixmap))
		palette.setBrush(QPalette.Inactive, QPalette.Window, QBrush(pixmap))

		self.setPalette(palette)
		self.setMask(pixmap.mask())

		# self.setCursor(QCursor(QPixmap(cursor_image.toqpixmap())))
		self.setToolTip('Сканер')
		# self.showFullScreen()

	def drag_window(self, event):
		delta = QPoint(event.globalPos() - self.old_position)
		self.move(self.x() + delta.x(), self.y() + delta.y())
		self.old_position = event.globalPos()
	def mousePressEvent(self, event):
		"""Выбрать окно при помощи мыши"""
		self.old_position = event.globalPos()
	def mouseReleaseEvent(self, event):
		print(event.x())
		if event.buttons() == Qt.LeftButton:
			print("Левая кнопка мыши отпущена")
	def mouseMoveEvent(self, event):
		"""Переместить окно с помощью мыши"""
		if event.buttons() == Qt.NoButton:
			print("Simple mouse motion")
		elif event.buttons() == Qt.LeftButton:
			print("Left click drag")
			self.drag_window(event)
		elif event.buttons() == Qt.RightButton:
			print("Right click drag")
		x, y = self.get_window_coordinates()
		width, height = self.get_window_size()
		region = x, y, width, height
		super(DisplayWindow, self).mouseMoveEvent(event)
	def get_window_size(self):
		"""Вернёт кортеж(width, height) размер окна"""
		size = self.frameSize().width(), self.frameSize().height()
		return size
	def get_window_coordinates(self):
		"""Вернёт кортеж(x, y) координаты окна"""
		coordinates = self.x(), self.y()
		return coordinates
	def resizeEvent(self, event):
		print(event)
	def releaseMouse(self, event):
		print(event.x())
	def wheelEvent(self, event):
		print(event.angleDelta())

def main():
	application = QApplication(sys.argv)
	display_window = DisplayWindow()
	display_window.show()
	sys.exit(application.exec_())

if __name__ == '__main__':
    main()


Реализация прозрачного окна с рамкой.
Перетаскивание я сделал, теперь не могу сделать изменение размера мышью.
'Гуглил' не нашёл не чего на эту тему.
Прошу помощи.
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы