0

我的代码有问题。我已经搜索了答案并使用了示例代码,但仍然无法解决这个问题。我有一个表格,我希望在单击表格行时激活一个插槽。目前我正试图让按钮对被点击做出反应。我做错了什么?提前致谢。

from PySide6.QtCore import *
from PySide6.QtWidgets import *
from PySide6.QtGui import *

class Window(QWidget):
    def __init__(self):
        # Initiate superclass
        QWidget.__init__(self)

        # Window-Layout setup
        layout = QGridLayout()
        self.setLayout(layout)

        # Table-Tab setup
        tab1 = TableTab(12, 3)
        tab2 = TableTab(12, 3)
        tab3 = TableTab(12, 3)

        tab1.addItem(0, 0, "Hej världen")

        # Tab-Widget setup
        tabWidget = QTabWidget()
        tabWidget.addTab(tab1.tRender(), "Available")
        tabWidget.addTab(tab2.tRender(), "Active")
        tabWidget.addTab(tab3.tRender(), "Completed")

        # Add Tab-Widget to layout
        layout.addWidget(tabWidget, 0, 0)

class Tab():
    def __init__(self):
        # Define layout
        self.layout = QGridLayout()

    def tRender(self):
        # Render tab
        self.tab = QWidget()
        self.tab.setLayout(self.layout)
        return self.tab

class TableTab(Tab):
    def __init__(self, rows, cols):
        # Initiate superclass
        Tab.__init__(self)

        # Setup table
        self.table = QTableWidget(rows, cols)
        self.table.setHorizontalHeaderLabels(["Job Overview", "Employer", "Payment", "Confirmed", "Date"])
        self.table.setEditTriggers(QTableWidget.NoEditTriggers)

        # Fix Headers
        header = self.table.horizontalHeader()
        for i in range(cols):
            if i == 0:
                header.setSectionResizeMode(0, QHeaderView.Stretch)
            else:
                header.setSectionResizeMode(i, QHeaderView.ResizeToContents)

        # Add widget to layout
        self.layout.addWidget(self.table, 0, 0)


    def addItem(self, row, col, text):
        # Create a cell widget
        self.btn = Button(text)
        self.table.setCellWidget(row, col, self.btn)

# THIS IS THE BUTTON CLASS
class Button(QPushButton):
    def __init__(self, text):
        QPushButton.__init__(self)
        self.setFlat(1)
        self.setText(text)
        self.setStyleSheet("QPushButton { text-align: left; }")
        
        # THIS IS THE CLICK CONNECT
        self.clicked.connect(print("Hello World!"))

if __name__ == "__main__":
    
    app = QApplication()
    screen = Window()
    screen.setWindowTitle("BlaBlaNet - Freelancer")
    screen.setFixedSize(800, 600)
    screen.show()
    app.exec_()

4

0 回答 0