从QDialog获取值,并在终止fi之前

2024-04-23 06:23:00 发布

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

我有两个python文件,其中一个文件想要调用Qlistview并运行QDialog。我想在终止第一个python文件之前,以python的方式构造索引值

文件结构:

---Widgetclass.py
---Class_test.py

守则:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

        lay = QtWidgets.QVBoxLayout(self)
        self.button = QtWidgets.QPushButton("Okay")

        self.listView = QtWidgets.QListView()
        lay.addWidget(self.listView)

        self.entry = QtGui.QStandardItemModel()
        self.listView.setModel(self.entry) 
        self.listView.setSpacing(5)

        for text in ("One", "two", "Three", "Four", 
                     "Five etc.."):
            it = QtGui.QStandardItem(text)
            self.entry.appendRow(it)

        Code_Group = QtWidgets.QGroupBox(self)
        Code_Group.setTitle("&Test")
        Code_Group.setLayout(lay)

        Vlay = QtWidgets.QVBoxLayout(self)
        Vlay.addWidget(Code_Group)
        Vlay.addWidget(self.button, alignment=QtCore.Qt.AlignCenter)
        Vlay.setSizeConstraint(Vlay.SetFixedSize)

        self.listView.selectionModel().currentChanged.connect(self.on_row_changed)

        self._INDEX = 0

    def on_row_changed(self, current, previous):
        self._INDEX = current.row()
        print('Row %d selected' % current.row())

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

建造商:

from Widgetclass import Widget as ls
from PyQt5 import QtCore, QtGui, QtWidgets

def value():
    print('Row index:', ls._INDEX, ':')       #<---- Value not callable?
    ls.close()

subwindow=ls()
subwindow.setWindowModality(QtCore.Qt.ApplicationModal)
subwindow.button.clicked.connect(value)
subwindow.exec_()

获取以下内容时出错:

AttributeError: type object 'Widget' has no attribute '_INDEX'

我想实现价值并关闭文件。但似乎不起作用


Tags: 文件importselfindexgroupcodewidgetls