Tôi đang chạy Ubuntu và tôi muốn có số màn hình được đính kèm, độ phân giải hiện tại của chúng và nếu có thể, vị trí của chúng có liên quan với nhau. Vì tôi không thích phân tích cú pháp đầu ra Console của xrandr - ít nhất là không nếu tôi không phải - tôi muốn làm điều đó với Python-XLib hoặc cách tiếp cận tương tự Pythonic.Nhận số lần hiển thị và độ phân giải cho mỗi hiển thị bằng Python mà không xrandr
Đây là sản phẩm xrandr cho cấu hình hiển thị của tôi:
$ 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
Tôi muốn nhận được những giá trị này với Python, theo một cách như thế này:
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
Khi cố gắng để có được thông tin qua Python -XLib (hoặc các libs khác như pyGTK và pygame), có vẻ như tất cả các màn hình luôn được xử lý như một màn hình duy nhất. Ví dụ đây là những gì tôi nhận với Xlib cho đến nay:
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
tôi biết làm thế nào để có được thông tin hiển thị gọi xrandr trong 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
Nhưng như tôi đã nói tôi muốn một cách tiếp cận sạch hơn mà không cần phải để phân tích đầu ra Console. Có thực sự không có cách nào để có được (chi tiết) Hiển thị thông tin với Python mà không cần phải phân tích cú pháp xrandr đầu ra?
bạn sẽ nhớ chia sẻ giải pháp của bạn xin. – jagguli
Có vẻ như liên kết đến ví dụ đã thay đổi. Tôi đã cập nhật nó. –
Bất kỳ ý tưởng làm thế nào để có được tên kết nối đầu ra từ xilb/xrandr? –