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())