16 PyQt5基础控件使用

16 PyQt5基础控件使用

在这篇教程中,我们将逐步了解PyQt5中的常用控件,包括按钮、标签和文本框等。通过简单的案例,我们将展示如何使用这些控件构建基本的图形用户界面(GUI)。

创建一个简单的窗口

首先,我们需要创建一个基本的PyQt5窗口。以下是创建PyQt5应用程序的基本步骤:

1
2
3
4
5
6
7
8
9
import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt5 示例')
window.setGeometry(100, 100, 300, 200)
window.show()
sys.exit(app.exec_())

运行上述代码,我们将看到一个简单的窗口。

按钮控件

按钮是用户交互的重要控件。我们使用QPushButton来创建一个按钮,并为其添加点击事件的处理程序。

创建按钮

以下是创建按钮的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
from PyQt5.QtWidgets import QPushButton, QVBoxLayout

button = QPushButton('点击我')
button.setToolTip('这是一个按钮')

def on_button_click():
print('按钮被点击了')

button.clicked.connect(on_button_click)

layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)

在这个例子中,当按钮被点击时,控制台会输出“按钮被点击了”。

标签控件

标签用于显示文本或图像。我们使用QLabel来添加标签。

创建标签

下面是创建标签的示例代码:

1
2
3
4
5
6
from PyQt5.QtWidgets import QLabel

label = QLabel('这是一个标签')
label.setAlignment(Qt.AlignCenter)

layout.addWidget(label)

我们使用setAlignment方法来设置标签内容的对齐方式。

文本框控件

文本框允许用户输入文本。使用QLineEdit可以创建单行文本框。

创建文本框

以下是创建文本框的代码:

1
2
3
4
5
6
from PyQt5.QtWidgets import QLineEdit

text_box = QLineEdit()
text_box.setPlaceholderText('在这里输入内容')

layout.addWidget(text_box)

文本框可以使用setPlaceholderText方法来设置提示文本。

完整示例

将所有这些控件结合在一起,我们可以创建一个简单的应用程序,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QVBoxLayout

def on_button_click():
entered_text = text_box.text()
label.setText(f'你输入的内容是: {entered_text}')

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt5 示例')
window.setGeometry(100, 100, 300, 200)

layout = QVBoxLayout()

label = QLabel('这是一个标签')
label.setAlignment(Qt.AlignCenter)
layout.addWidget(label)

text_box = QLineEdit()
text_box.setPlaceholderText('在这里输入内容')
layout.addWidget(text_box)

button = QPushButton('点击我')
button.clicked.connect(on_button_click)
layout.addWidget(button)

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

在这个示例中,用户可以输入内容并点击按钮,标签将更新为用户输入的文本。

小结

在本教程中,我们介绍了PyQt5中的基本控件,包括按钮、标签和文本框。通过简单的代码示例,你可以开始构建自己的图形用户界面。希望这为你的PyQt5学习之旅打下基础!

17 PyQt5 小节控件属性和方法

17 PyQt5 小节控件属性和方法

在PyQt5中,QWidget是所有用户界面的基类,而QLabelQPushButtonQLineEdit等小节控件都是其派生类型。本文将介绍一些常用的小节控件的属性和方法,并结合案例进行说明。

QLabel

QLabel用于显示文本或图像。

常用属性

  • text: 获取或设置标签显示的文本。
  • pixmap: 获取或设置显示的图像。

常用方法

  • setText(text): 设置标签显示的文本。
  • setPixmap(pixmap): 设置标签显示的图像。
  • setAlignment(alignment): 设置文本的对齐方式。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout

app = QApplication([])

window = QWidget()
layout = QVBoxLayout()

label = QLabel()
label.setText("Hello, PyQt5!")
label.setAlignment(Qt.AlignCenter)

layout.addWidget(label)
window.setLayout(layout)

window.show()
app.exec_()

QPushButton

QPushButton是一个可点击的按钮。

常用属性

  • text: 获取或设置按钮上显示的文本。
  • checkable: 获取或设置按钮是否可以被选中。

常用方法

  • setText(text): 设置按钮上的文本。
  • setChecked(checked): 设置按钮的选中状态。
  • clicked.connect(slot): 连接按钮的点击信号到槽函数。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QVBoxLayout

def on_button_clicked():
print("Button clicked!")

app = QApplication([])

window = QWidget()
layout = QVBoxLayout()

button = QPushButton("Click Me")
button.clicked.connect(on_button_clicked)

layout.addWidget(button)
window.setLayout(layout)

window.show()
app.exec_()

QLineEdit

QLineEdit用于输入和编辑文本。

常用属性

  • text: 获取或设置输入框中的文本。
  • echoMode: 获取或设置输入框的回显模式(如密码模式)。

常用方法

  • setText(text): 设置输入框中的文本。
  • clear(): 清空输入框中的文本。
  • textChanged.connect(slot): 连接文本变化信号到槽函数。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QVBoxLayout

def on_text_changed(text):
print(f"Text changed: {text}")

app = QApplication([])

window = QWidget()
layout = QVBoxLayout()

line_edit = QLineEdit()
line_edit.textChanged.connect(on_text_changed)

layout.addWidget(line_edit)
window.setLayout(layout)

window.show()
app.exec_()

总结

以上是一些常用PyQt5小节控件的属性和方法。通过案例代码,可以看到这些控件如何在实际应用中使用。掌握这些基本控件的操作,可以为创建丰富的用户界面打下基础。

18 PyQt5 小节控件事件与处理

18 PyQt5 小节控件事件与处理

在使用 PyQt5 开发图形用户界面时,事件处理是一个重要的概念。小节控件(如按钮、文本框等)可以触发各种事件,而我们需要编写处理这些事件的代码。

1. 事件基础

PyQt5 使用信号和槽机制来处理事件。信号 是事件的发起者,而 是连接到信号的处理函数。每当信号发射时,相关的槽函数就会被调用。

2. 创建基本窗口与控件

我们首先创建一个简单的窗口,包含一个按钮,当点击该按钮时,触发一个事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox

class MyWindow(QWidget):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):
self.setWindowTitle('Event Handling Example')
self.setGeometry(100, 100, 300, 200)

# 创建布局
layout = QVBoxLayout()

# 创建按钮
self.button = QPushButton('点击我')
self.button.clicked.connect(self.on_button_clicked) # 连接信号和槽

layout.addWidget(self.button)
self.setLayout(layout)

def on_button_clicked(self):
QMessageBox.information(self, '消息', '按钮被点击了!')

if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

代码解释

  • QPushButton 是我们创建的按钮控件。
  • 通过 self.button.clicked.connect(self.on_button_clicked),我们将按钮的点击事件与 on_button_clicked 方法连接。
  • 当按钮被点击时,会弹出一个信息框显示“按钮被点击了!”

3. 处理更多控件的事件

除了按钮,我们还可以处理其他控件的事件,例如文本框的输入事件。以下是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from PyQt5.QtWidgets import QLineEdit

class MyWindow(QWidget):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):
self.setWindowTitle('Event Handling Example')
self.setGeometry(100, 100, 300, 200)

# 创建布局
layout = QVBoxLayout()

# 创建文本框
self.textbox = QLineEdit(self)
self.textbox.setPlaceholderText('请在这里输入文本')
self.textbox.textChanged.connect(self.on_text_changed) # 连接文本变化信号

layout.addWidget(self.textbox)
self.setLayout(layout)

def on_text_changed(self, text):
print(f'文本框内容变化: {text}')

if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

代码解释

  • QLineEdit 是文本输入框的控件。
  • self.textbox.textChanged.connect(self.on_text_changed) 表示文本框内容变化时,调用 on_text_changed 方法。
  • on_text_changed 方法接收当前文本并打印到控制台。

4. 使用鼠标事件

我们还可以处理鼠标事件,例如鼠标进入或离开控件。以下是如何处理鼠标点击和进入事件的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class MyWindow(QWidget):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):
self.setWindowTitle('Mouse Event Handling')
self.setGeometry(100, 100, 300, 200)

layout = QVBoxLayout()

self.label = QPushButton('悬浮在我上面或点击我!')
self.label.setMouseTracking(True)
self.label.mousePressEvent = self.on_mouse_press # 自定义鼠标按下事件
self.label.enterEvent = self.on_mouse_enter # 自定义鼠标进入事件
self.label.leaveEvent = self.on_mouse_leave # 自定义鼠标离开事件

layout.addWidget(self.label)
self.setLayout(layout)

def on_mouse_press(self, event):
print('按钮被点击!')

def on_mouse_enter(self, event):
print('鼠标进入按钮区域!')

def on_mouse_leave(self, event):
print('鼠标离开按钮区域!')

if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

代码解释

  • self.label.mousePressEvent = self.on_mouse_press 自定义了点击事件。
  • self.label.enterEventself.label.leaveEvent 分别处理鼠标进入和离开的事件。

结论

PyQt5 中,处理小节控件的事件是非常灵活的。通过信号和槽机制,我们能够方便地管理和响应用户的操作。通过上述示例,你可以快速构建功能丰富的应用程序,提升用户体验。继续探索 PyQt5 的其他控件和事件处理,将开启更多的可能性!