2

目前我正在开发带有 D-Bus 接口的 KDE Plasma/Wallpaper 插件(小型学习项目)。我有多显示器设置,希望能够独立处理每个 D-Bus Plasma/Wallpaper 实例(在不同的显示器上运行,甚至在单独的 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:对不起我的英语不好-这不是我的母语。

4

0 回答 0