dm/demo.py
2023-08-31 18:18:18 +08:00

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