Spark Streaming с окном из N элементов

Когда я запускаю это в Python 3.5 и PyQt5, он отлично работает, он печатает правильные режимы и отмеченные элементы. Я удалил строки для чтения / записи файлов для тестирования. Для PyQt4 и Python 2.7 вам просто нужно исправить пару импортных операций и инструкцию печати. Запустите его, отметьте пару элементов, и через 5 секунд что вы видите на консоли?

from PyQt5 import QtCore

from PyQt5 import QtGui
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QWizardPage, QListView


class AppRemovalPage(QWizardPage):
    def __init__( self, parent ):
        super(AppRemovalPage, self).__init__(parent)
        self.setTitle('Apps to Remove')
        self.setSubTitle('Listview')
        self.list_view = QListView(self)
        self.list_view.setMinimumSize(465, 200)
        self.isWritten = False
        loo = "/home/test1/file.txt"

        self.model = QtGui.QStandardItemModel(self.list_view)
        for line in ('a', 'b', 'c', 'd', 'e'):
            self.item = QtGui.QStandardItem(line)
            self.item.setCheckable(True)
            self.item.setCheckState(QtCore.Qt.Unchecked)
            self.model.appendRow(self.item)

        self.list_view.setModel(self.model)
        self.list_view.show()


    def print_checked_items(self):
        for index in range(self.model.rowCount()):
            item = self.model.item(index)
            if item.checkState() == QtCore.Qt.Checked:
                if self.isWritten:
                    mode = "a"
                else:
                    mode = "w"
                    self.isWritten = True
                print ('%s' % item.text())

        print("print checked items executed")


app = QApplication([])
listview = AppRemovalPage(None)
listview.show()
QTimer.singleShot(5000, listview.print_checked_items)
app.exec_()

Если у меня есть галочка a, c и d, я вижу следующее:

a w
c a
d a
print checked items executed

Обновить, чтобы показать, как работает файловый объект Python (и на самом деле это лучший код, потому что он поддерживает использование управления контекстом):

def print_checked_items(self):
    path = "checked.txt"
    mode = 'a' if self.isWritten else 'w'
    if len(self.items) > 0:
        with open(path, mode) as file:
            for item in self.items:
                print('%s' % item.text())
                file.write(item.text() + "\n")
        file.close()
    print("print checked items executed")

Соединение можно записать wizard.button(QWizard.NextButton).clicked.connect(appremoval.print_checked_items)

1
задан ig-dev 27 March 2019 в 07:45
поделиться