[英]change backlight brightness in linux with python
我正在開發一個Python項目,該項目應該能夠控制我的背光亮度。 我正在使用Ubuntu 17.04,已經找到了顯示背光亮度的文件所在的位置
/sys/class/backlight/acpi_video0/brightness
我可以在bash終端中使用以更改值的命令是
sudo su -c 'echo 12 > /sys/class/backlight/acpi_video0/brightness'
但是我不知道如何在py項目中實現這一點。 也許這也是錯誤的開始方法。
謝謝你們幫我忙。
您可以使用os.system()
或os.system()
subprocess.Popen()
確實不建議這樣做,但是對於個人項目來說,它的輸入不是來自外部資源,對我來說並沒有什么害處。也就是說,應該謹慎使用,因為您將直接從命令行執行,因此您的CLI可以執行的所有操作都可以。 你被警告了。
使用os.system()
(您可能必須在命令之前添加外殼程序的路徑。在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"')
再說一次,我不建議經常使用此命令,特別是在外部源可能會影響正在運行的命令的輸出的情況下。 僅當您知道將在命令中輸入什么內容時,才使用此功能。
在Ubuntu中,我使用xbacklight包和從os
模塊導入的python的os.system()
實現了此目的 。
安裝方式
sudo apt install xbacklight
Python命令 :
os.system('xbacklight -set ' + str(value))
,其中value是輸入。
因此,我做了一些研究,並在此站點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,所以對我來說還可以
我的函數現在看起來像這樣:
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之間
嘗試這個:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.