Python PySide,将窗口停靠到任务栏

Python PySide,将窗口停靠到任务栏,python,qt,pyside,taskbar,qtgui,Python,Qt,Pyside,Taskbar,Qtgui,我正在用PySide和python2.7编写一个程序 class SystemTrayIcon(QtGui.QSystemTrayIcon): def __init__(self, parent=None): QtGui.QSystemTrayIcon.__init__(self, parent) self.setIcon(QtGui.QIcon("myIcon.ico")) self.iconMenu = QtGui.QMenu(p

我正在用PySide和python2.7编写一个程序

class SystemTrayIcon(QtGui.QSystemTrayIcon):
    def __init__(self, parent=None):

        QtGui.QSystemTrayIcon.__init__(self, parent)

        self.setIcon(QtGui.QIcon("myIcon.ico"))

        self.iconMenu = QtGui.QMenu(parent)
        appcalc = self.iconMenu.addAction("ShowWindow")
        appexit = self.iconMenu.addAction("Exit")
        self.setContextMenu(self.iconMenu)

        self.connect(appcalc, QtCore.SIGNAL('triggered()'),self.appCalc)
        self.connect(appexit,QtCore.SIGNAL('triggered()'),self.appExit)

        self.show()
此代码显示带有图标菜单的工作任务栏图标。现在,当我点击“显示窗口”时,我想加载一个小部件/窗口,它停靠在图标的同一位置的任务栏上

如果我使用几何,这将永远不会起作用,因为有些人在屏幕的顶部或侧面有任务栏

如何使用PySide将窗口/小部件停靠到任务栏


谢谢。

您应该能够结合使用和来计算任务栏的大小及其方向:

>>> d = qApp.desktop()
>>> d.screenGeometry()
PySide.QtCore.QRect(0, 0, 1600, 900)
>>>>
>>> d.availableGeometry() # taskbar at top
PySide.QtCore.QRect(0, 36, 1600, 864)
>>> d.availableGeometry() # taskbar on left
PySide.QtCore.QRect(36, 0, 1564, 900)
>>>
>>> d.availableGeometry() # taskbar at bottom
PySide.QtCore.QRect(0, 0, 1600, 864)
>>> d.availableGeometry() # taskbar on right
PySide.QtCore.QRect(0, 0, 1564, 900)
如您所见,如果
x()
y()
为非零,则任务栏位于顶部或左侧;否则,如果
width()
height()
小于屏幕值,则任务栏位于底部或右侧(如果上述条件均不成立,则没有任务栏)

有了它,您就可以使用来计算窗口相对于任务栏的位置

PS

一些窗口管理器有一个余量的概念,当窗口最初定位或最大化时,无法放置窗口。此边距通常设置为一个或两个像素,以便鼠标始终可以访问桌面的边缘


因此,根据目标平台的不同,在计算任务栏大小和方向时,您可能需要考虑到这一点。

您好,这似乎是一个好主意,我将尝试理解它,因为我是一个完全有gui和qt的noob。我的计划是跨平台。今天我将测试你的想法