PyQt5

您所在的位置:网站首页 pyqt5多页面 PyQt5

PyQt5

2023-08-24 19:43| 来源: 网络整理| 查看: 265

本文使用PyQt的版本为5.11.3,其他版本的兼容性测试 使用表格开发时,想加入一个页码选择操作的控件 有例子是利用滚动条,本文不涉及任何滚动条的利用。 UI界面与逻辑分离。 运行效果: 666

# _*_ coding:utf-8 _*_ import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import pyqtSignal class TableWidget(QWidget): control_signal = pyqtSignal(list) def __init__(self, *args, **kwargs): super(TableWidget, self).__init__(*args, **kwargs) self.__init_ui() def __init_ui(self): style_sheet = """ QTableWidget { border: none; background-color:rgb(240,240,240) } QPushButton{ max-width: 18ex; max-height: 6ex; font-size: 11px; } QLineEdit{ max-width: 30px } """ self.table = QTableWidget(3, 5) # 3 行 5 列的表格 self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 自适应宽度 self.__layout = QVBoxLayout() self.__layout.addWidget(self.table) self.setLayout(self.__layout) self.setStyleSheet(style_sheet) def setPageController(self, page): """自定义页码控制器""" control_layout = QHBoxLayout() homePage = QPushButton("首页") prePage = QPushButton("") finalPage = QPushButton("尾页") self.totalPage = QLabel("共" + str(page) + "页") skipLable_0 = QLabel("跳到") self.skipPage = QLineEdit() skipLabel_1 = QLabel("页") confirmSkip = QPushButton("确定") homePage.clicked.connect(self.__home_page) prePage.clicked.connect(self.__pre_page) nextPage.clicked.connect(self.__next_page) finalPage.clicked.connect(self.__final_page) confirmSkip.clicked.connect(self.__confirm_skip) control_layout.addStretch(1) control_layout.addWidget(homePage) control_layout.addWidget(prePage) control_layout.addWidget(self.curPage) control_layout.addWidget(nextPage) control_layout.addWidget(finalPage) control_layout.addWidget(self.totalPage) control_layout.addWidget(skipLable_0) control_layout.addWidget(self.skipPage) control_layout.addWidget(skipLabel_1) control_layout.addWidget(confirmSkip) control_layout.addStretch(1) self.__layout.addLayout(control_layout) def __home_page(self): """点击首页信号""" self.control_signal.emit(["home", self.curPage.text()]) def __pre_page(self): """点击上一页信号""" self.control_signal.emit(["pre", self.curPage.text()]) def __next_page(self): """点击下一页信号""" self.control_signal.emit(["next", self.curPage.text()]) def __final_page(self): """尾页点击信号""" self.control_signal.emit(["final", self.curPage.text()]) def __confirm_skip(self): """跳转页码确定""" self.control_signal.emit(["confirm", self.skipPage.text()]) def showTotalPage(self): """返回当前总页数""" return int(self.totalPage.text()[1:-1]) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.__init_ui() def __init_ui(self): self.resize(500, 250) self.setWindowTitle("QTableWidget加页码控制器") self.table_widget = TableWidget() # 实例化表格 self.table_widget.setPageController(10) # 表格设置页码控制 self.table_widget.control_signal.connect(self.page_controller) self.setCentralWidget(self.table_widget) def page_controller(self, signal): total_page = self.table_widget.showTotalPage() if "home" == signal[0]: self.table_widget.curPage.setText("1") elif "pre" == signal[0]: if 1 == int(signal[1]): QMessageBox.information(self, "提示", "已经是第一页了", QMessageBox.Yes) return self.table_widget.curPage.setText(str(int(signal[1]) - 1)) elif "next" == signal[0]: if total_page == int(signal[1]): QMessageBox.information(self, "提示", "已经是最后一页了", QMessageBox.Yes) return self.table_widget.curPage.setText(str(int(signal[1]) + 1)) elif "final" == signal[0]: self.table_widget.curPage.setText(str(total_page)) elif "confirm" == signal[0]: if total_page


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3