From 3b396f652f39228a7ce4b9091be4dee6de3b2b3f Mon Sep 17 00:00:00 2001 From: luming Date: Thu, 31 Aug 2023 18:18:18 +0800 Subject: [PATCH] some script. --- demo.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ dm.py | 19 +++++++----- opera.py | 51 ++++++++++++++++++++++++++++++++ 3 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 demo.py create mode 100644 opera.py diff --git a/demo.py b/demo.py new file mode 100644 index 0000000..b8f5df1 --- /dev/null +++ b/demo.py @@ -0,0 +1,89 @@ +import sys +from functools import partial +from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout, \ + QWidget, QTextEdit, QHeaderView, QHBoxLayout + + +class TableWidgetExample(QMainWindow): + def __init__(self): + super().__init__() + + self.initUI() + + def initUI(self): + self.setWindowTitle("QTableWidget Example") + self.setGeometry(100, 100, 800, 600) + + central_widget = QWidget() + center_layout = QVBoxLayout(central_widget) + self.setCentralWidget(central_widget) + + top_widget = QWidget() + top_layout = QVBoxLayout(top_widget) + + table = QTableWidget() + table.setColumnCount(3) # Add one more column for buttons + + table.setHorizontalHeaderLabels(["URL", "状态", "操作"]) + + header = table.horizontalHeader() + header.setSectionResizeMode(QHeaderView.ResizeToContents) + header.setSectionResizeMode(0, QHeaderView.Stretch) + + data = [ + ["https://baidu.com", "队列中"], + ["https://google.com", "队列中"], + ["https://rainss.cn", "队列中"] + ] + + table.setRowCount(len(data)) # Remove extra row + + for row, rowData in enumerate(data): + for col, value in enumerate(rowData): + item = QTableWidgetItem(value) + table.setItem(row, col, item) + + # Add buttons in the last column + button_layout = QHBoxLayout() + + pause_button = QPushButton("暂停") + pause_button.setMinimumHeight(40) # Set button width + pause_button.setMinimumWidth(60) # Set button width + delete_button = QPushButton("删除") + delete_button.setMinimumHeight(40) # Set button width + delete_button.setMinimumWidth(60) # Set button width + + pause_button.clicked.connect(partial(self.pause_button_clicked, row)) + delete_button.clicked.connect(partial(self.delete_button_clicked, row)) + + button_layout.addWidget(pause_button) + button_layout.addWidget(delete_button) + + button_container = QWidget() + button_container.setLayout(button_layout) + + table.setCellWidget(row, 2, button_container) + + + top_layout.addWidget(table) + center_layout.addWidget(top_widget) + + bottom_widget = QWidget() + bottom_widget.setFixedHeight(300) + bottom_layout = QVBoxLayout(bottom_widget) + input_text = QTextEdit() + bottom_layout.addWidget(input_text) + center_layout.addWidget(bottom_widget) + + def pause_button_clicked(self, row): + print(f"Paused row {row}") + + def delete_button_clicked(self, row): + print(f"Deleted row {row}") + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = TableWidgetExample() + window.show() + sys.exit(app.exec()) diff --git a/dm.py b/dm.py index 34b1f4b..ad9ca91 100644 --- a/dm.py +++ b/dm.py @@ -1,9 +1,8 @@ import sys from PySide6 import QtWidgets -from PySide6.QtCore import Qt from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget, \ - QHBoxLayout, QSplitter, QTextEdit + QTextEdit class TableWidgetExample(QMainWindow): @@ -16,12 +15,15 @@ class TableWidgetExample(QMainWindow): self.setWindowTitle("QTableWidget Example") self.setGeometry(100, 100, 800, 600) - top_layout = QVBoxLayout() - central_widget = QWidget(self) - central_widget.setLayout(top_layout) + central_widget = QWidget() + center_layout = QVBoxLayout(central_widget) + # central_widget.setLayout(center_layout) self.setCentralWidget(central_widget) - table = QTableWidget(self) + top_widget = QWidget() + top_layout = QVBoxLayout(top_widget) + + table = QTableWidget() table.setColumnCount(3) table.setHorizontalHeaderLabels(["URL", "状态", "操作"]) @@ -44,13 +46,16 @@ class TableWidgetExample(QMainWindow): table.setItem(row, col, item) top_layout.addWidget(table) + center_layout.addWidget(top_widget) # 下部分布局 bottom_widget = QWidget() + bottom_widget.setFixedHeight(300) bottom_layout = QVBoxLayout(bottom_widget) input_text = QTextEdit() bottom_layout.addWidget(input_text) - # central_widget.addWidget(bottom_widget) + center_layout.addWidget(bottom_widget) + if __name__ == "__main__": app = QApplication(sys.argv) diff --git a/opera.py b/opera.py new file mode 100644 index 0000000..d771008 --- /dev/null +++ b/opera.py @@ -0,0 +1,51 @@ +import sys +from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout, QWidget + +class TableExample(QMainWindow): + def __init__(self): + super().__init__() + + self.setWindowTitle("Table Example") + self.setGeometry(100, 100, 400, 300) + + self.central_widget = QWidget() + self.setCentralWidget(self.central_widget) + + self.layout = QVBoxLayout() + self.central_widget.setLayout(self.layout) + + self.table_widget = QTableWidget() + self.table_widget.setColumnCount(2) + self.table_widget.setHorizontalHeaderLabels(["Name", "Action"]) + self.layout.addWidget(self.table_widget) + + self.populate_table() + + def populate_table(self): + data = [("Item 1", "Edit"), ("Item 2", "Edit"), ("Item 3", "Edit")] + + for row, (name, action) in enumerate(data): + self.table_widget.insertRow(row) + name_item = QTableWidgetItem(name) + self.table_widget.setItem(row, 0, name_item) + + button = QPushButton(action) + button.clicked.connect(self.button_clicked) + self.table_widget.setCellWidget(row, 1, button) + + def button_clicked(self): + button = self.sender() + if isinstance(button, QPushButton): + index = self.table_widget.indexAt(button.pos()) + if index.isValid(): + row = index.row() + print(f"Button clicked in row {row}") + +def main(): + app = QApplication(sys.argv) + window = TableExample() + window.show() + sys.exit(app.exec()) + +if __name__ == "__main__": + main()