什么是识别屏幕的正确方法,等离子体正在运行?

时间:2014-03-02 21:35:29

标签: python-2.7 debian pyqt4 kde4 plasma

目前我正在使用D-Bus接口(小型学习项目)开发KDE等离子/壁纸插件。我有多显示器设置,希望能够独立地处理每个D-Bus等离子/壁纸实例(在不同的显示器上运行,甚至在不同的KDE活动上运行),我最初的想法很简单:注册单独的D-Bus服务,具有独特性每个插件实例的名称(即“com.example.prettydesktop.wlp - ”+ unique_screen_id)。但是我找不到任何方法从PyKDE Wallpaper 获取屏幕ID,因为它不是 QWidget 子类,因此我不能使用 QDesktopWidget.screenNumber 方法。

class DbusWlp(Wallpaper):
    def __init__(self, parent, args=None):
        Wallpaper.__init__(self, parent)

    # Plasmoid init code should go here
    def init(self, config):
        # also tried QX11Info but I think it's not relevant here
        print QtGui.QX11Info().appScreen() # always returns 0
        print QtGui.QApplication.desktop().screenNumber(self) # doesn't work because self is not QWidget subclass
        print QtGui.QApplication.desktop().isVirtualDesktop() # returns True just in case

主要问题是:确定正在运行的屏幕等离子插件(墙纸或等离子体)的正确方法是什么?还有一个小问题:有没有更好的方法来实现交叉小部件通信然后D-Bus?
我对PyQT和PyKDE都很新,所以我很容易错过一些明显的东西,任何帮助都会非常感激。提前致谢!

PS:抱歉我的英语不好 - 这不是我的母语。

0 个答案:

没有答案