【问题标题】:change backlight brightness in linux with python用python改变linux中的背光亮度
【发布时间】:2017-10-31 00:53:58
【问题描述】:

我正在开发一个 python 项目,它应该能够控制我的背光亮度。我正在使用 Ubuntu 17.04,并且我已经找到了显示我的背光亮度的文件所在的位置

/sys/class/backlight/acpi_video0/brightness

我可以在 bash 终端中用来更改值的命令是

sudo su -c 'echo 12 > /sys/class/backlight/acpi_video0/brightness'

但我不知道如何在 py 项目中实现这一点。 也许这也是错误的开始方式。

谢谢你们可能帮助我。

【问题讨论】:

  • 任务1:修复文件的权限,这样你就可以在没有sudo的情况下改变亮度。
  • 是的,我刚刚想通了,但我也不知道该怎么做。我在这里找到了一些有用的东西raspberrypi.org/forums/viewtopic.php?t=134390&p=894761 让我搜索一下而不是发布我的代码
  • 这是 sysfs 不是真正的文件系统。您不得更改其权限。在 Python 中,只需打开文件,写入并关闭它。

标签: python linux brightness backlight


【解决方案1】:

在 Ubuntu 中,我使用 xbacklight 包和从 os 模块导入的 python 的 os.system() 实现了这一点。

安装

sudo apt install xbacklight

Python 命令

os.system('xbacklight -set ' + str(value)) 其中 value 是输入。

【讨论】:

    【解决方案2】:

    您可以使用os.system()subprocess.Popen()

    不是很推荐,但我认为对于输入不是来自外部来源的个人项目没有任何害处。话虽如此,使用它时应该小心,因为您将直接从命令行执行,因此您的 CLI 可以做的任何事情都可以做到。您已收到警告。

    使用os.system()(您可能必须在命令前添加shell 路径。在Linux 中这通常是/bin/bash。):

    import os os.system('echo "your command goes here"')

    如果这不起作用,那么它应该看起来像:

    os.system('/bin/bash echo "your command goes here"')

    使用subprocess.Popen()(同样,您可能需要在命令的其余部分之前添加外壳路径。:

    import subprocess subprocess.Popen('echo "your command goes here"')

    我要再说一次,不建议频繁使用,尤其是在外部源可能影响正在运行的命令的输出的情况下。仅当您知道将要输入命令的内容时才使用它。

    【讨论】:

      【解决方案3】:

      所以我做了一些研究,在这个网站上https://wiki.archlinux.org/index.php/backlight我找到了命令

      gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.freedesktop.DBus.Properties.Set org.gnome.SettingsDaemon.Power.Screen Brightness "<int32 50>"
      

      我不知道它是如何工作的,但我改变了背光。

      它只适用于 gnome! 但因为我使用的是 gnome,而且应用程序应该适用于 gnome,所以对我来说没问题

      我的函数现在看起来像这样:

      def change_brightness(self, value):
          os.system('gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.freedesktop.DBus.Properties.Set org.gnome.SettingsDaemon.Power.Screen Brightness "<int32 ' + str(value) + '>"')
      

      值必须在 0 到 100 之间

      【讨论】:

        【解决方案4】:

        试试这个:

        def set_brightness(brightness):
            if int(brightness) > 15:
                raise TypeError("Need int 0 < and > 15")
            elif int(brightness) < 0:
                raise TypeError("Need int 0 < and > 15")
            with open("/sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness","w") as bright:
                 bright.write(str(brightness))
                 bright.close()
        set_brightness(0) #Brightness 0-15
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-02
          • 2012-03-13
          • 2014-02-17
          • 2011-04-14
          • 2010-09-26
          • 1970-01-01
          • 2012-12-15
          • 1970-01-01
          相关资源
          最近更新 更多