Xlib或PyQ的示例代码
时间: 2024-01-26 12:03:24 浏览: 155
以下是使用Xlib库的 Python 示例代码:
```python
from Xlib import X, display, Xutil
from Xlib.ext import randr
# 获取显示器
d = display.Display()
# 获取屏幕
screen = d.screen()
# 获取根窗口
root = screen.root
# 获取屏幕尺寸
width = root.get_geometry().width
height = root.get_geometry().height
# 创建窗口
win = root.create_window(
0, 0, width // 2, height // 2, # 窗口坐标和大小
0, # 边框大小
screen.root_depth,
X.InputOutput,
X.CopyFromParent,
background_pixel=screen.white_pixel,
event_mask=X.ExposureMask | X.StructureNotifyMask)
# 显示窗口
win.map()
# 进入事件循环
while True:
event = d.next_event()
if event.type == X.Expose:
# 窗口重绘
win.fill_rectangle(screen.default_gc, 0, 0, width // 2, height // 2)
elif event.type == X.ConfigureNotify:
# 窗口大小变化
win.fill_rectangle(screen.default_gc, 0, 0, event.width, event.height)
elif event.type == X.KeyPress:
# 键盘事件
if event.detail == X.Keycode("Q"):
break
# 销毁窗口
win.destroy()
# 断开连接
d.disconnect()
```
以下是使用PyQt库的 Python 示例代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
# 创建应用程序
app = QApplication([])
# 创建窗口
win = QWidget()
win.setGeometry(100, 100, 400, 400)
# 重写绘制函数
def paintEvent(event):
painter = QPainter(win)
painter.setPen(QPen(Qt.red, 5))
painter.drawLine(0, 0, 400, 400)
painter.drawLine(0, 400, 400, 0)
# 显示窗口
win.show()
# 进入事件循环
app.exec_()
```
这两个示例代码分别使用了 Xlib 和 PyQT 库来实现窗口创建、绘制和事件处理等功能。其中 Xlib 库提供了对 X Window 系统的底层访问,而 PyQT 库则提供了更高层次的 GUI 组件和事件处理功能。
阅读全文