Witam
Taki oto programik:
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QAction, QMenu
from PyQt5.QtCore import Qt
def f_winMenu(*d):
QtwinMenu = QMenu(Qwindow)
#
QtMtitle = QtwinMenu.addAction("winMenu")
QtMtitle.setEnabled(False)
QtwinMenu.addSeparator()
QtMopt1 = QtwinMenu.addAction("Option 1")
QtMopt2 = QtwinMenu.addAction("Option 2")
QtwinMenu.addSeparator()
QtMquit = QtwinMenu.addAction("Quit")
QtMresult = QtwinMenu.exec_(Qwindow.mapToGlobal(d[0].pos()))
#
if QtMresult == QtMquit:
if Qwindow: Qwindow.close()
oQtApp.exit(0)
return None
def f_drop(*d):
if "QDragEnterEvent" in str(d[0]):
d[0].accept()
return None
QtdropMenu = QMenu(Qwindow)
QtDropFrom = QtdropMenu.addAction("dropMenu")
QtDropFrom.setEnabled(False)
QtdropMenu.addSeparator()
QtDrOpt1 = QtdropMenu.addAction("Drop Option 1")
QtDrOpt2 = QtdropMenu.addAction("Drop Option 2")
QtMresult = QtdropMenu.exec_(Qwindow.mapToGlobal(d[0].pos()))
return None
oQtApp = QApplication(sys.argv)
Qwindow = QMainWindow()
Qwindow.setWindowFlags(Qt.Window | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
Qwindow.setWindowTitle("dropZone")
Qwindow.setAcceptDrops(True)
Qwindow.resize(140,100)
Qwindow.dragEnterEvent = f_drop
Qwindow.dropEvent = f_drop
Qwindow.contextMenuEvent = f_winMenu
Qwindow.show()
oQtApp.exec_()
quit()
SOBR - Szare Okno Bez Ramek
Robiąc dropa na to SOBR np. jakiejś ikony, otwiera dropMenu w oknie (na obrazku dropMenu). Prawy przycisk na tym SOBR otwiera menu bez ramek (winMenu), a następnie, ponowny drop i jest dropMenu bez ramek tak jak być powinno.
Czy zna ktoś jakieś rozwiązanie dla takiego "brzydkiego" dla mnie problemu?
Radek Glebicki


