空のディレクトリに移動するときに、無効なインデックスについて次のコンソールスパムが表示されます。空のディレクトリに移動するためにダブルクリックされた親ディレクトリの列に応じて、少し違うメッセージが表示されます。名前列をダブルクリックすると、空のディレクトリに入った後にテーブルのどこかをクリックすると、スパムの最初のセット(1 0)が表示されます。他の列をダブルクリックすると、1 1、1 2、1 3メッセージが表示されます。QAccessibleTable :: child:QTableViewとQFileSystemModelで空のディレクトリに無効なインデックスがあります
QAccessibleTable::child: Invalid index at: 1 0
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 11
QAccessibleTable::child: Invalid index at: 1 0
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 11
QAccessibleTable::child: Invalid index at: 1 0
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 11
QAccessibleTable::child: Invalid index at: 1 1
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 12
QAccessibleTable::child: Invalid index at: 1 1
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 12
QAccessibleTable::child: Invalid index at: 1 1
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 12
QAccessibleTable::child: Invalid index at: 1 2
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 13
QAccessibleTable::child: Invalid index at: 1 2
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 13
QAccessibleTable::child: Invalid index at: 1 2
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 13
QAccessibleTable::child: Invalid index at: 1 3
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 14
QAccessibleTable::child: Invalid index at: 1 3
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 14
QAccessibleTable::child: Invalid index at: 1 3
Cannot creat accessible child interface for object: QTableView(0x5651e6c1edd0) index: 14
setRootIndex()呼び出しの位置を移動しようとしましたが、それは役に立ちませんでした。何か他にやるべきことはありますか?
このコードは動作するようですが、(PyQt5 Crash with QFileSystemModel and QSortFilterProxyModel..doing something wrong?)以前にこのスパムに関連するランダムクラッシュが発生しました。
import os, sys, tempfile
from PyQt5 import QtCore, QtWidgets
print(QtCore.qVersion())
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
layout = QtWidgets.QVBoxLayout()
self.setLayout(layout)
self._view = QtWidgets.QTableView()
layout.addWidget(self._view)
self._model = QtWidgets.QFileSystemModel()
self._model.setFilter(QtCore.QDir.AllDirs | QtCore.QDir.NoDot)
self._view.setModel(self._model)
self._view.doubleClicked.connect(self._double_clicked)
# Create a temporary directory structure (tmpxyz/foo) starting at the location of this file
path = os.path.dirname(os.path.abspath(__file__))
self.temp_dir = tempfile.TemporaryDirectory(dir=path)
print('created temporary directory', self.temp_dir.name)
foo_dir = os.path.join(self.temp_dir.name, 'foo')
os.mkdir(foo_dir)
self.parentIndex = self._model.setRootPath(foo_dir)
# self._set_view_root(self.parentIndex) # Same spam whether called here or deferred to _loaded
self._model.directoryLoaded.connect(self._loaded)
def _set_view_root(self, source_index):
self._view.setRootIndex(source_index)
def _loaded(self):
path = self._model.rootPath()
source_index = self._model.index(path)
self._set_view_root(source_index)
print('_loaded', path, self._model.rowCount(self.parentIndex))
def _double_clicked(self, index):
info = self._model.fileInfo(index)
absolute_path = info.absoluteFilePath()
print('_double_clicked', absolute_path)
if info.isDir():
self.parentIndex = self._model.setRootPath(absolute_path)
# self._set_view_root(self.parentIndex)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())
私はクリーンな仮想環境でのUbuntu 17.04でのPython 3.6.1、PyQt5の== 5.8.2を使用していますが、私は、Python 3.5.3と5.7.1のPyQtとベースのUbuntu上で同じ動作を取得。