position a Qt widget relative to its parent


from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

import subprocess
import os
import sys
import mouse

import keyboard


class Window(QMainWindow):

    def __init__(self, parent=None, **kwargs):
        super().__init__(parent, **kwargs)
        self.resize(800, 600)
        # keyboard.add_hotkey('ctrl+c', print, args=('triggered', 'ctrl+c'))
        # keyboard.add_hotkey('ctrl+x', print, args=('triggered', 'ctrl+x'))
        # QShortcut(QKeySequence.Find, self, self.setUpSearchBar)
        self.setUpSearchBar()

    def setUpSearchBar(self):
        self.toolBar = QToolBar(self)
        self.toolBar.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)  # Qt.Tool 是为了hide my QT application from taskbar
        self.toolBar.setMovable(False)  # 去除最前面的竖直三点
        self.searchBarLineEdit = QLineEdit()
        self.toolBar.addWidget(self.searchBarLineEdit)
        self.toolBar.addAction('10/11')
        self.toolBar.addSeparator()
        self.toolBar.addAction('↓')  # ᐱᐁ
        self.toolBar.addAction('↑')  # ᐯ
        # self.showEvent = lambda event: self.toolBar.move(self.mapToGlobal(self.rect().topRight()).x() - self.toolBar.width(), self.mapToGlobal(self.rect().topRight()).y())
        # self.showEvent = lambda event: print(self.mapToGlobal(self.rect().topRight())), self.toolBar.move(self.mapToGlobal(self.rect().topRight()).x() - self.toolBar.width(), self.mapToGlobal(self.rect().topRight()).y())
        self.toolBar.show()
        toolBarPosition = self.mapToGlobal(self.rect().topRight())
        self.toolBar.move(toolBarPosition.x() - self.toolBar.width(), toolBarPosition.y())



if __name__ == "__main__":

    app = QApplication(sys.argv)
    webEngineView = Window()
    webEngineView.show()
    sys.exit(app.exec_())

Comments