Python程序期望返回

2024-04-27 04:37:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法正确执行我正在编写的程序。我想在一个单独的类中建立一个表。类中的方法似乎需要返回,以便表显示,我正在试图找出原因。如果我使用“return”或“returnnone”,当我运行程序时,表将不会显示。但是,如果我使用一个无意义的引用,比如“return junk”,它编译时会出现一个错误,即引用没有定义,但是当我运行程序时,表会出现。有人能帮我们吗?你知道吗

from PyQt4.QtCore import *
from PyQt4.QtGui  import *
import sys

class MyMainWindow(QMainWindow):

    def __init__(self, parent=None):

        super(MyMainWindow, self).__init__(parent)
        self.table_widget = TableWidget(self)
        self.setCentralWidget(self.table_widget)

class TableWidget(QWidget):

    def __init__(self, parent):
        super(TableWidget, self).__init__(parent)

        table = QTableWidget()
        tableItem = QTableWidgetItem()

        # initiate table
        table.setWindowTitle("test_table")
        table.resize(400, 250)
        table.setRowCount(4)
        table.setColumnCount(2)

        # set data
        table.setItem(0,0, QTableWidgetItem("Item (1,1)"))
        table.setItem(0,1, QTableWidgetItem("Item (1,2)"))
        table.setItem(1,0, QTableWidgetItem("Item (2,1)"))
        table.setItem(1,1, QTableWidgetItem("Item (2,2)"))
        table.setItem(2,0, QTableWidgetItem("Item (3,1)"))
        table.setItem(2,1, QTableWidgetItem("Item (3,2)"))
        table.setItem(3,0, QTableWidgetItem("Item (4,1)"))
        table.setItem(3,1, QTableWidgetItem("Item (4,2)"))
        table.setItem(3,0, QTableWidgetItem("Item (4,1)"))
        table.setItem(3,1, QTableWidgetItem("Item (4,2)"))

        # show table
        table.show()
        return junk

def main():
    app = QApplication(sys.argv)
    GUI = MyMainWindow()
    GUI.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

Tags: importself程序returninitdefshowsys
1条回答
网友
1楼 · 发布于 2024-04-27 04:37:43

您没有保留对表的引用,因此当__init__返回时,它会被垃圾回收。可以通过将表放入布局来解决此问题,如下所示:

class TableWidget(QWidget):

    def __init__(self, parent):
        super(TableWidget, self).__init__(parent)

        table = QTableWidget()
        tableItem = QTableWidgetItem()

        table.setRowCount(4)
        table.setColumnCount(2)

        # set data
        table.setItem(0,0, QTableWidgetItem("Item (1,1)"))
        table.setItem(0,1, QTableWidgetItem("Item (1,2)"))
        table.setItem(1,0, QTableWidgetItem("Item (2,1)"))
        table.setItem(1,1, QTableWidgetItem("Item (2,2)"))
        table.setItem(2,0, QTableWidgetItem("Item (3,1)"))
        table.setItem(2,1, QTableWidgetItem("Item (3,2)"))
        table.setItem(3,0, QTableWidgetItem("Item (4,1)"))
        table.setItem(3,1, QTableWidgetItem("Item (4,2)"))
        table.setItem(3,0, QTableWidgetItem("Item (4,1)"))
        table.setItem(3,1, QTableWidgetItem("Item (4,2)"))

        layout = QVBoxLayout(self)
        layout.addWidget(table)

相关问题 更多 >