python 自绘ui
时间: 2025-01-03 09:42:45 浏览: 8
### Python 自定义 UI 绘制库与方法
对于希望实现自定义用户界面绘制的应用程序开发者而言,Python 提供了多种强大的图形库来满足这一需求。以下是几种常用的用于创建和定制 GUI 的工具:
#### PyQt 或 PySide
PyQt 和 PySide 是 Qt 库的官方 Python 绑定版本之一。这两个框架允许开发人员利用 C++ 编写的 Qt 功能,在 Python 中构建跨平台应用程序。它们不仅支持标准的小部件(widget),还提供了 `QPainter` 类来进行低级别的绘图操作。
```python
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor, QBrush
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 100)
self.setWindowTitle('Colours')
self.show()
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
col = QColor(0, 0, 0)
col.setNamedColor('#d4d4d4')
qp.setPen(col)
qp.setBrush(QColor(200, 0, 0))
qp.drawRect(10, 15, 90, 60)
if __name__ == '__main__':
app = QApplication([])
ex = Example()
exit(app.exec_())
```
这段代码展示了如何使用 `QPainter` 来画矩形并填充颜色[^1]。
#### Kivy
Kivy 是另一个专注于多点触控应用的开源 Python 框架。它特别适合移动设备上的游戏和其他交互式多媒体项目。通过其内置的 Canvas API 可以轻松地执行复杂的二维图形渲染任务。
```python
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Rectangle
class MyWidget(Widget):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
with self.canvas:
Color(1., 1., 0.)
self.rect = Rectangle(pos=self.pos, size=(50, 50))
app = App()
widget = MyWidget()
app.run()
```
此示例说明了怎样在 Kivy 中设置一个黄色方块,并将其位置固定于窗口左上角[^2]。
#### wxPython
wxPython 封装了流行的原生 GUI 工具包——wxWidgets。这使得基于该库编写的程序能够保持操作系统特有的外观风格。虽然不像前两者那样提供高级别的抽象层,但是仍然可以通过访问底层 DC(Device Contexts)对象完成精细控制下的绘画工作。
```python
import wx
class MyFrame(wx.Frame):
def __init__(self, parent=None, id=-1, title='My Frame'):
wx.Frame.__init__(self, parent, id, title,
size=(300, 200),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
panel = wx.Panel(self)
dc = wx.ClientDC(panel)
brush = wx.Brush("blue")
dc.SetBackground(brush)
dc.Clear()
dc.DrawText("Hello", 10, 10)
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame(None)
frame.Show(True)
app.MainLoop()
```
上述例子中可以看到简单的背景着色以及文字输出过程[^3]。
阅读全文