es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando dbus en Python sin usar un comando de shell.

Esto es lo que he hecho porque no puedo entender cómo utilizar la biblioteca dbus. Este script encuesta el DPI de mi ratón para cuando se cambia mediante el botón en el ratón y lo establece en algo utilizable, luego imprime el DPI actual a un widget de KDE, pero estoy utilizando la biblioteca subprocess porque no puedo entender cómo utilizar la biblioteca dbus.

#!/usr/bin/env python3

from openrazer.client import DeviceManager
from time import sleep
from subprocess import run as call
from sys import argv

if len(argv) == 1:
    print("¡No se ha dado el ID de la barra de bricolaje!")
    quit()

ID='/id'+argv[1]

dev=DeviceManager().devices[0]
lout=0

while True:
    if not dev:
        sleep(3)
        if DeviceManager().devices[0]:
            dev=DeviceManager().devices[0]
        continue;
    dpi=dev.dpi
    if dpi[0] == dpi[1]:
        if dpi[0] == 1800:
            dev.dpi=(900,900)
        elif dpi[0] == 4500:
            dev.dpi=(1000,1000)
        elif dpi[0] == 9000:
            dev.dpi=(1100,1100)
        elif dpi[0] == 16000:
            dev.dpi=(1200,1200)
        out=str(dev.dpi[0])
    else:
        out=str(dpi[0])+','+str(dpi[1])
    if not lout == out:
        call(['qdbus','org.kde.plasma.doityourselfbar',ID,'org.kde.plasma.doityourselfbar.pass','|A|<img src="/usr/local/share/icons/diybar/mouse.svg" height="22">'+out+' DPI|Razer DeathAdder Elite||'])
    lout=out
    sleep(0.7)

# Ejemplo de comando de shell
# qdbus org.kde.plasma.doityourselfbar /id_10 org.kde.plasma.doityourselfbar.pass '|A|<img src="/usr/local/share/icons/diybar/mouse.svg" height="22">900 DPI|Razer DeathAdder Elite||'

He revisado la documentación de dbus, pero he renunciado a intentar comprenderlo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, estoy aquí para ayudarte en cómo utilizar la librería dbus con Python.

    Lo primero que necesitas hacer es instalar el módulo dbus utilizando pip. Puedes hacerlo ejecutando el siguiente comando en tu terminal:

    $ pip install dbus-python
    

    Luego, puedes importar el paquete dbus y conectarte al bus del sistema específico de dbus que deseas utilizar. Por ejemplo:

    import dbus
    
    bus = dbus.SystemBus()
    

    Una vez que tienes un objeto bus, puedes utilizarlo para conectarte a servicios y objetos dbus específicos mediante sus identificadores únicos (o “nombres de bus”). Puedes llamar métodos en estos objetos y obtener sus propiedades utilizando los métodos proporcionados por el objeto bus.

    A continuación, se muestra un ejemplo de cómo podrías utilizar la librería dbus para interactuar con un servicio dbus:

    import dbus
    
    bus = dbus.SystemBus()
    service = bus.get_object('com.example.MyService', '/com/example/MyObject')
    interface = dbus.Interface(service, 'com.example.MyInterface')
    result = interface.method_call('com.example.MyMethod', 'argument')
    

    En este ejemplo, primero obtenemos una referencia al objeto bus, luego lo utilizamos para obtener una referencia a un servicio y objeto dbus específico. Luego creamos un objeto de interfaz utilizando esta referencia, lo que nos permite llamar métodos en el objeto dbus.

    Para llamar un método, utilizamos el método method_call() del objeto de interfaz, pasando el nombre del método y cualquier argumento. El valor devuelto de la llamada al método se almacena en la variable result.

    Espero que esto te ayude a entender cómo utilizar la librería dbus en tu script de Python. ¡Buena suerte!

Comments are closed.