90 lines
2.8 KiB
Python
90 lines
2.8 KiB
Python
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())
|