1 列表控件
python
复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, \
QFormLayout, QLineEdit, QTextEdit, QHBoxLayout, QVBoxLayout, QCheckBox, QListWidget
import sys
class MyWindow(QWidget): # QWidget, QDialog容器类
def __init__(self):
super().__init__()
# 设置窗口大小
self.resize(400, 200)
# 设置标题
self.setWindowTitle('这是一个PyQT窗口')
layout = QFormLayout() # 表单
list_widget = QListWidget() # 列表布局
list_widget.addItem('Python')
list_widget.addItem('Java')
list_widget.addItems(["C Plus Plus", "GoLang", "C"])
list_widget.currentItemChanged.connect(self.list_selected)
label = QLabel('请选择:')
layout.addRow(label, list_widget)
# 把布局放入当前窗体
self.setLayout(layout)
def list_selected(self, item):
print(f'你选择的是:{item.text()}')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
2 下拉列表控件
python
复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, \
QFormLayout, QLineEdit, QTextEdit, QHBoxLayout, QVBoxLayout, QCheckBox, QListWidget, QComboBox
import sys
class MyWindow(QWidget): # QWidget, QDialog容器类
def __init__(self):
super().__init__()
# 设置窗口大小
self.resize(400, 200)
# 设置标题
self.setWindowTitle('这是一个PyQT窗口')
layout = QFormLayout() # 表单
combox_list = QComboBox() # 下拉列表控件
combox_list.addItem('Python')
combox_list.addItem('Java')
combox_list.addItems(["C Plus Plus", "GoLang", "C"])
label = QLabel('请选择:')
layout.addRow(label, combox_list)
# 绑定槽函数
combox_list.currentIndexChanged.connect(self.combox_list_selected)
# 把布局放入当前窗体
self.setLayout(layout)
def combox_list_selected(self, idx):
item = self.sender()
print(f'你选择的是:{item.currentText()},索引是{idx}')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
3 表格控件
python
复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QTableWidget, QTableWidgetItem
from PyQt5.QtGui import QFont
import sys
data_header = ['序号', '代码', '名称', '价格', '涨跌幅', '涨跌额']
data_body = [['1', '688628', '优利德', '35.22', '0.2', '5.87'],
['2', '300845', '捷安高科', '24.36', '0.2', '4.06'],
['3', '301289', '国缆检测', '51.85', '0.172016', '7.61'],
['4', '300645', '正元智慧', '27.3', '0.170167', '3.97'],
['5', '300248', '新开普', '11.39', '0.152834', '1.51']]
class MyWindow(QWidget): # QWidget, QDialog容器类
def __init__(self):
super().__init__()
# 设置窗口大小
self.resize(800, 400)
# 设置标题
self.setWindowTitle('这是一个PyQT窗口')
layout = QVBoxLayout() # 垂直布局
table = QTableWidget()
# 设置行数
table.setRowCount(len(data_body))
# 设置列数
table.setColumnCount(len(data_header))
# 设置字体
table.setFont(QFont("仿宋", 12))
# 设置表头
table.setHorizontalHeaderLabels(data_header)
# 填充数据
for row in range(len(data_body)):
for col in range(len(data_header)):
data_item = QTableWidgetItem(data_body[row][col])
table.setItem(row, col, data_item)
table.itemSelectionChanged.connect(self.table_changed)
layout.addWidget(table)
# 把布局放入当前窗体
self.setLayout(layout)
def table_changed(self):
table = self.sender()
select_row = table.currentRow()
print(data_body[select_row])
if __name__ == '__main__':
# 创建应用程序对象, sys.argv 获取命令行参数
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())