我運行Ubuntu和我想連接的顯示器,其當前的分辨率的數量,如果可能的話,它們相對於彼此的位置。 因爲我不喜歡解析xrandr的控制檯輸出 - 至少不是如果我沒有 - 我想這樣做與Python-XLib或類似的Python化的做法。獲取顯示計數和Python中的每個顯示器的分辨率不xrandr
這是我的顯示配置的xrandr輸出:
$ xrandr
Screen 0: minimum 320 x 200, current 2960 x 1050, maximum 8192 x 8192
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
1680x1050 60.0*+
1400x1050 60.0
1280x1024 75.0 60.0
1440x900 59.9
1280x960 75.0 60.0
1152x864 75.0
1280x720 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
VGA-0 connected 1280x1024+1680+26 (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.0 + 75.0*
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
我想用Python的這些值,在某種程度上是這樣的:
displays = get_displays()
print displays[0].width # out: 1680
print displays[1].width # out: 1280
print displays[0].x_position # out: 0
print displays[1].x_position # out: 1680
當試圖通過Python來獲得信息-XLib(或其他庫,如pyGTK和pygame),似乎所有的顯示總是作爲一個單獨的顯示來處理。例如,這是我與XLIB走到這一步:
import Xlib
import Xlib.display
display = Xlib.display.Display(':0')
print display.screen_count() # output: 1
root = display.screen().root
print root.get_geometry().width # output: 2960 -> no way to get width of single display?
print root.get_geometry().height # output: 1050
我知道怎麼去顯示信息調用xrandr內的Python:
import subprocess
output = subprocess.Popen('xrandr | grep "\*" | cut -d" " -f4',shell=True, stdout=subprocess.PIPE).communicate()[0]
displays = output.strip().split('\n')
for display in displays:
values = display.split('x')
width = values[0]
height = values[1]
print "Width:" + width + ",height:" + height
但正如我所說,我寧願一個更簡潔的方法,而不必解析控制檯輸出。 難道真的沒有辦法讓與Python(詳細)顯示信息而不必解析xrandr輸出?
,你會介意分享您的解決方案請。 – jagguli 2014-02-15 12:55:32
看起來像示例的鏈接已更改。我已經更新了它。 – 2014-02-15 13:12:50
任何想法如何從xilb/xrandr獲取連接的輸出名稱? – 2014-09-22 23:20:28