Python PyQt4.QtGui 模块,QStandardItemModel() 实例源码

我们从Python开源项目中,提取了以下31个代码示例,用于说明如何使用PyQt4.QtGui.QStandardItemModel()

项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, *args, **kwargs):
        QtGui.QSplitter.__init__(self, *args, **kwargs)
        self.setOrientation(QtCore.Qt.Horizontal)
        self.setChildrenCollapsible(False)
        self.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.MinimumExpanding)

        self.tree = QtGui.QTreeView()
        self.eater = False
        self.addWidget(self.tree)
        self.tree.setEditTriggers(QtGui.QTreeView.NoEditTriggers)
        self.tree.setExpandsOnDoubleClick(False)
        self.tree.setHeaderHidden(True)
        self.tree.setTextElideMode(QtCore.Qt.ElideNone)
        self.model = QtGui.QStandardItemModel()
        self.tree.setModel(self.model)
        self.tree.clicked.connect(self.param_select)
        self.tree.currentChanged = self.param_select

        self.param_widget = QtGui.QWidget()
        self.addWidget(self.param_widget)
        self.build_summary()
        self.tree.header().setResizeMode(QtGui.QHeaderView.ResizeToContents)
        self.tree.expandAll()
        self.tree.setMinimumWidth(self.tree.sizeHintForColumn(0))
        self.tree.collapseAll()
项目:ee-book    作者:ee-book    | 项目源码 | 文件源码
def update_library(self):
        self.library = get_library()

        self.library_table.clear()
        self.library_table.setStyleSheet("selection-background-color: blue")  # ???????
        self.library_table.setRowCount(len(self.library['books']))
        self.library_table.setColumnCount(5)    # TODO: ???????
        self.library_table.setHorizontalHeaderLabels(['Title', 'Authors', 'Tags', 'Date', 'Size(MB)'])

        self.library_table.setAlternatingRowColors(True)
        self.library_table.setEditTriggers(QTableWidget.NoEditTriggers)
        self.library_table.setSelectionBehavior(QTableWidget.SelectRows)
        self.library_table.setSelectionMode(QTableWidget.SingleSelection)

        self.model = QtGui.QStandardItemModel(self)
        for i, book in enumerate(self.library['books']):
            for j, cell in enumerate((book['title'], book['author'], book['tags'],
                                      book['date'], book['size'])):
                item = QTableWidgetItem(cell)
                item.setTextAlignment(Qt.AlignCenter)
                self.library_table.setItem(i, j, item)

        self.library_table.resizeColumnsToContents()
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, parent):
        QtGui.QComboBox.__init__(self, parent)
        self.model = QtGui.QStandardItemModel()
        self.state_item = QtGui.QStandardItem('all')
        self.state_item.setEnabled(False)
        self.model.appendRow(self.state_item)
        all_item = QtGui.QStandardItem('select all')
        self.model.appendRow(all_item)
        none_item = QtGui.QStandardItem('select none')
        self.model.appendRow(none_item)
        self.bank_items = []
        for i in range(8):
            item = QtGui.QStandardItem(uppercase[i])
            item.setCheckable(True)
            item.setCheckState(2)
            item.setTristate(False)
            self.model.appendRow(item)
            self.bank_items.append(item)
        self.setModel(self.model)
        self.activated.connect(self.check)
        self.setCurrentIndex(0)
        self.installEventFilter(self)
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, parent, item_list=None):
        QtGui.QListView.__init__(self, parent)
        self.main = parent
        self.setEditTriggers(QtGui.QListView.NoEditTriggers)
        self.setMouseTracking(True)
        if sys.platform == 'win32':
            self.setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.Tool)
        else:
            self.setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.Tool|QtCore.Qt.ToolTip)
        self.model = QtGui.QStandardItemModel()
        self.setModel(self.model)
        if item_list:
            self.add_items(item_list)
        self.adjust_size()
        self.clicked.connect(self.selected)
        self.activated.connect(self.selected)
        self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, main, *args, **kwargs):
        QtGui.QDialog.__init__(self, main, *args, **kwargs)
        load_ui(self, 'dialogs/wavetable_undo.ui')
        self.main = main
        self.undo = self.main.undo
        self.undo_model = QtGui.QStandardItemModel()
        self.undo_list.setModel(self.undo_model)

        original = QtGui.QStandardItem('Initial state')
        setBoldItalic(original, True, False)
        self.undo_model.appendRow(original)

        self.undo.updated.connect(self.update)
        self.undo.indexChanged.connect(self.indexChanged)
        self.undo_list.doubleClicked.connect(self.do_action)
        self.undo_btn.clicked.connect(lambda: self.undo.setIndex(0))
        self.redo_btn.clicked.connect(lambda: self.undo.setIndex(self.undo.count()))
项目:mol    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, parent=None):
        QtGui.QComboBox.__init__(self, parent)
        self.setEditable(True)
        self.setInsertPolicy(QtGui.QComboBox.NoInsert)
        self.setMaximumWidth(100)
        self.p_model = QtGui.QStandardItemModel()
        self.name_model = QtGui.QStandardItemModel()
        self.setModel(self.p_model)

        metrics = QtGui.QFontMetrics(self.view().font())
        ctrl_width = []
        note_width = []
        for i in range(128):
            ctrl = Controllers[i]
            ctrl_str = '{} - {}'.format(i, ctrl)
            ctrl_item = QtGui.QStandardItem(ctrl_str)
            ctrl_item.setData(i, IdRole)
            ctrl_item.setData(ctrl, NameRole)
            ctrl_width.append(metrics.width(ctrl_str))
            ctrl_name_item = QtGui.QStandardItem(ctrl)
            ctrl_name_item.setData(i, IdRole)
            note = NoteNames[i].title()
            note_str = '{} - {}'.format(i, note)
            note_item = QtGui.QStandardItem(note_str)
            note_item.setData(i, IdRole)
            note_item.setData(note, NameRole)
            note_width.append(metrics.width(note_str))
            note_name_item = QtGui.QStandardItem(note)
            note_name_item.setData(i, IdRole)
            self.p_model.appendRow([ctrl_item, note_item])
            self.name_model.appendRow([ctrl_name_item, note_name_item])

        self.ctrl_width = max(ctrl_width)
        self.note_width = max(note_width)
        self.ref_size = self.width()

        self.activated.connect(lambda i: self.lineEdit().setCursorPosition(0))
        self.currentIndexChanged.connect(lambda i: self.lineEdit().setCursorPosition(0))
项目:mol    作者:MaurizioB    | 项目源码 | 文件源码
def create_event_types(self):
        self.trigger_model = QtGui.QStandardItemModel()
        self.record_model = QtGui.QStandardItemModel()
        self.ignore_model = QtGui.QStandardItemModel()
        self.trigger_list.setModel(self.trigger_model)
        self.record_list.setModel(self.record_model)
        self.ignore_list.setModel(self.ignore_model)
        all_types = list(trigger_defaults)+list(record_defaults)
        view_dict = {TRIGGER: self.trigger_model, RECORD: self.record_model, IGNORE: self.ignore_model}
#        defaults = {ev_type:dest for dest, t in dict({trigger_defaults: self.trigger_model, record_defaults: self.record_model, ignore_defaults: self.ignore_model}.items()) for ev_type in t}
        for ev_type in all_types:
            item = QtGui.QStandardItem(str(ev_type))
            item.setData(ev_type, EventRole)
#            item.setData(defaults[ev_type], DefaultRole)
            item.setData(True if ev_type in trigger_allowed else False, TriggerRole)
            item.setData(True if ev_type in record_allowed else False, RecordRole)
            view_dict[self.event_filter[ev_type]].appendRow(item)
项目:sardana    作者:sardana-org    | 项目源码 | 文件源码
def setValue(self, value, undo=False):
        if not self._actualValue == value:
            if undo:
                self.emit(QtCore.SIGNAL("valueChanged"), copy.deepcopy(
                    self._actualValue), copy.deepcopy(value))
            self._actualValue = copy.deepcopy(value)

        rows = len(value)
        if (self._format == "2D") and (rows > 0):
            columns = len(value[0])
        else:
            columns = 1

        self._model = QtGui.QStandardItemModel(rows, columns)
        for row in range(rows):
            for column in range(columns):

                index = self._model.index(row, column, QtCore.QModelIndex())
                if (self._format == "1D"):
                    self._model.setData(index, QtCore.QVariant(value[row]))
                if (self._format == "2D"):
                    self._model.setData(
                        index, QtCore.QVariant(value[row][column]))
        self._tableView.setModel(self._model)
项目:CPNSimulatorGui    作者:chris-kuhr    | 项目源码 | 文件源码
def __init__(self, parent=None):
        QtGui.QStandardItemModel.__init__(self, parent)
    #------------------------------------------------------------------------------------------------
项目:SimpleSniffer    作者:HatBoy    | 项目源码 | 文件源码
def __init__(self, parent=None):
        QtGui.QTableView.__init__(self, parent)
        self.model = QtGui.QStandardItemModel(parent=self)
        self.model.setHorizontalHeaderLabels(['Source', 'Destination', 'Protoco', 'Info'])
        self.setModel(self.model)
        self.setColumnWidth(0, 120)
        self.setColumnWidth(1, 120)
        self.setColumnWidth(2, 100)
        self.setColumnWidth(3, 350)
        self.setAlternatingRowColors(True)
        self.setAutoScroll(True)
        self.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) #????
        self.setEditTriggers(QtGui.QTableView.NoEditTriggers) #????
        self.setSelectionMode(QtGui.QTableView.SingleSelection) #????
        self.show()
项目:adblockradio    作者:quasoft    | 项目源码 | 文件源码
def __init__(self, parent):
        QDialog.__init__(self, parent)
        Ui_TextItemEditor.__init__(self)
        self.setupUi(self)
        self.itemName = "Value"
        # Create an empty model for the list's data
        self._model = QStandardItemModel(self.list_view)
项目:EasyStorj    作者:lakewik    | 项目源码 | 文件源码
def sort(self, column, order):
        if column == 0:
            self._sort_order = order
            QtGui.QStandardItemModel.sort(self, column, order)
项目:EasyStorj    作者:lakewik    | 项目源码 | 文件源码
def update_files_list(self):

        self.tools = Tools()

        # initialize model for inserting to table
        model = QtGui.QStandardItemModel(1, 1)

        model.setHorizontalHeaderLabels(['File name', 'File size', 'Mimetype', 'File ID'])

        self.current_bucket_index = self.file_manager_ui.bucket_select_combo_box.currentIndex()
        self.current_selected_bucket_id = self.bucket_id_list[self.current_bucket_index]

        i = 0

        try:
            for self.file_details in self.storj_engine.storj_client.bucket_files(str(self.current_selected_bucket_id)):
                item = QtGui.QStandardItem(str(self.file_details['filename'].replace('[DECRYPTED]', "")))
                model.setItem(i, 0, item)  # row, column, item (StandardItem)

                file_size_str = self.tools.human_size(int(self.file_details["size"]))  # get human readable file size

                item = QtGui.QStandardItem(str(file_size_str))
                model.setItem(i, 1, item)  # row, column, item (QQtGui.StandardItem)

                item = QtGui.QStandardItem(str(self.file_details['mimetype']))
                model.setItem(i, 2, item)  # row, column, item (QStandardItem)

                item = QtGui.QStandardItem(str(self.file_details['id']))
                model.setItem(i, 3, item)  # row, column, item (QStandardItem)

                i = i + 1

                self.__logger.info(self.file_details)

        except sjexc.StorjBridgeApiError as e:
            self.__logger.error(e)

        self.file_manager_ui.files_list_tableview.clearFocus()
        self.file_manager_ui.files_list_tableview.setModel(model)
        self.file_manager_ui.files_list_tableview.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
项目:EasyStorj    作者:lakewik    | 项目源码 | 文件源码
def initialize_buckets_table(self):
        self.storj_engine = StorjEngine()  # Init StorjEngine
        self.__logger.info('resolving buckets')
        # Initialize model for inserting to table
        model = QStandardItemModel(1, 1)

        model.setHorizontalHeaderLabels(['Name', 'Storage', 'Transfer', 'ID'])

        i = 0
        try:
            for bucket in self.storj_engine.storj_client.bucket_list():
                item = QStandardItem(bucket.name)
                model.setItem(i, 0, item)  # row, column, item (QStandardItem)

                item = QStandardItem(str(bucket.storage))
                model.setItem(i, 1, item)  # row, column, item (QStandardItem)

                item = QStandardItem(str(bucket.transfer))
                model.setItem(i, 2, item)  # row, column, item (QStandardItem)

                item = QStandardItem(bucket.id)
                model.setItem(i, 3, item)  # row, column, item (QStandardItem)

                i = i + 1

        except sjexc.StorjBridgeApiError as e:
            QtGui.QMessageBox.about(
                self,
                'Unhandled bucket resolving exception',
                'Exception: %s' % e)

        # Set label of user buckets number
        self.bucket_manager_ui.total_buckets_label.setText(str(i))
        self.bucket_manager_ui.bucket_list_tableview.setModel(model)
        self.bucket_manager_ui.bucket_list_tableview.horizontalHeader().\
            setResizeMode(QtGui.QHeaderView.Stretch)
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def createEditor(self, parent, option, index):
        self.proxy = index.model()
        self.index = self.proxy.mapToSource(index)
        combo = QtGui.QComboBox(parent)
        model = QtGui.QStandardItemModel()
        [model.appendRow(QtGui.QStandardItem(cat)) for cat in categories]
        combo.setModel(model)
        combo.setCurrentIndex(index.data(CatRole).toPyObject())
        combo.activated.connect(lambda i: parent.setFocus())
        return combo
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def createEditor(self, parent, option, index):
        self.index = index
        combo = QtGui.QComboBox(parent)
        combo.addItems(['Unchanged'] + index.data(ValuesRole).toPyObject())
#        model = QtGui.QStandardItemModel()
#        [model.appendRow(QtGui.QStandardItem(value)) for value in index.data(ValuesRole).toPyObject()]
#        combo.setModel(model)
        combo.setCurrentIndex(index.data(EditedRole).toPyObject() + 1)
        combo.activated.connect(lambda i: parent.setFocus())
        return combo
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, parent=None):
        QtGui.QStandardItemModel.__init__(self, 0, 7, parent)
        self.setHorizontalHeaderLabels(sound_headers)
项目:Bigglesworth    作者:MaurizioB    | 项目源码 | 文件源码
def clear(self):
        QtGui.QStandardItemModel.clear(self)
        self.setHorizontalHeaderLabels(sound_headers)
        self.cleared.emit()
项目:mol    作者:MaurizioB    | 项目源码 | 文件源码
def showEvent(self, event):
        QtGui.QComboBox.showEvent(self, event)
        completer_model = self.lineEdit().completer().model()
        new_model = QtGui.QStandardItemModel(self)
        for r in range(self.p_model.rowCount()):
            new_model.appendRow([completer_model.item(r, 0).clone(), completer_model.item(r, 1).clone()])
            new_model.appendRow([self.name_model.item(r, 0).clone(), self.name_model.item(r, 1).clone()])
        self.lineEdit().completer().setModel(new_model)
        self.lineEdit().completer().setCompletionMode(QtGui.QCompleter.PopupCompletion)
        self.lineEdit().completer().activated['QModelIndex'].connect(self.completer_activated)
        self.lineEdit().completer().highlighted['QModelIndex'].connect(self.completer_activated)
        self.setModelColumn(self.modelColumn())
项目:mol    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, main):
        QtGui.QDialog.__init__(self, parent=None)
        _load_ui(self, 'auto_connect_add.ui')
        self.main = main
        self.graph = main.main.graph
        self.graph_model = QtGui.QStandardItemModel()
        self.graph_model.setHorizontalHeaderLabels(['Name', 'Address'])
        self.input_table.setModel(self.graph_model)
        self.input_table.doubleClicked.connect(self.activate)
        self.input_table.setRowHidden(True, 2)
        self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False)
        self.input_edit.textChanged.connect(self.text_update)
        self.build_graph()
项目:mol    作者:MaurizioB    | 项目源码 | 文件源码
def createEditor(self, parent, option, index):
            self.table = parent.parent()
            self.index = index
            combo = QtGui.QComboBox(parent)
            model = QtGui.QStandardItemModel()
            [model.appendRow(item.clone()) for item in event_model]
            combo.setModel(model)
            combo.setCurrentIndex(index.data(EventIdRole).toPyObject())
            combo.activated.connect(lambda i: parent.setFocus())
            return combo
项目:MidiMemo    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, parent):
        QtGui.QDialog.__init__(self, parent)
        _load_ui(self, 'sourcefilter.ui')
        self.model = QtGui.QStandardItemModel()
        self.listview.setModel(self.model)
        self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False)
        self.setter_edit.textChanged.connect(self.enable_ok)
项目:MidiMemo    作者:MaurizioB    | 项目源码 | 文件源码
def build_models(self):
        self.client_id_model = QtGui.QStandardItemModel()
        self.client_id_list.setModel(self.client_id_model)
        self.client_id_list.setItemDelegate(self.FilterDelegate(self, '[0-9]+'))
        self.port_id_model = QtGui.QStandardItemModel()
        self.port_id_list.setModel(self.port_id_model)
        self.port_id_list.setItemDelegate(self.FilterDelegate(self, '[0-9]+:[0-9]+'))
        self.port_name_model = QtGui.QStandardItemModel()
        self.port_name_list.setModel(self.port_name_model)
        self.port_name_list.setItemDelegate(self.FilterDelegate(self, '.+'))

        ref_data = namedtuple('ref_data', 'model list filter add_btn del_btn dialog')
        reference_list = ['client_id', 'port_id', 'port_name']
        self.reference = {}
        for ref in reference_list:
            model = getattr(self, '{}_model'.format(ref))
            list = getattr(self, '{}_list'.format(ref))
            filter = getattr(self, '{}_filter'.format(ref))
            add_btn = getattr(self, '{}_add_btn'.format(ref))
            del_btn = getattr(self, '{}_del_btn'.format(ref))
            dialog = getattr(SourceFilterDialog, '{}_dialog'.format(ref))
            self.reference[ref] = ref_data(model, list, filter, add_btn, del_btn, dialog)
            for f in filter:
                item = QtGui.QStandardItem(str(f))
                model.appendRow(item)

            add_btn.clicked.connect(lambda state, ref=ref: self.filter_dialog(ref))
            del_btn.clicked.connect(lambda state, ref=ref: self.item_delete(ref))
            model.rowsInserted.connect(lambda index, start, end, ref=ref: self.model_check(ref))
            model.rowsRemoved.connect(lambda index, start, end, ref=ref: self.model_check(ref))
            self.model_check(ref)
项目:MidiMemo    作者:MaurizioB    | 项目源码 | 文件源码
def headerData(self, section, orientation, role):
#        if orientation == QtCore.Qt.Vertical and role == QtCore.Qt.DisplayRole:
#            print section
#            return QtCore.QVariant('p')
        if orientation == QtCore.Qt.Vertical and role == QtCore.Qt.FontRole:
            font = QtGui.QFont(self.model.headerData(0, QtCore.Qt.Horizontal, role))
            if section == self.start_item:
                font.setBold(True)
            else:
                font.setBold(False)
            return font
        return QtGui.QStandardItemModel.headerData(self.model, section, orientation, role)
项目:sardana    作者:sardana-org    | 项目源码 | 文件源码
def setValue(self, value):
        rows = len(value)
        columns = 2
        self._model = QtGui.QStandardItemModel(rows, columns)
        for row in range(rows):
            for column in range(columns):
                index = self._model.index(row, column, QtCore.QModelIndex())
                self._model.setData(index, QtCore.QVariant(value[row][column]))
        self._model.setHeaderData(0, Qt.Qt.Horizontal, Qt.QVariant("Name"))
        self._model.setHeaderData(1, Qt.Qt.Horizontal, Qt.QVariant("Axis"))
        self._tableView.setModel(self._model)
        self._tableView.horizontalHeader().setVisible(True)
        self._tableView.horizontalHeader().setStretchLastSection(True)
项目:GkukanMusiumdb    作者:matsu-reki    | 项目源码 | 文件源码
def __init__(self, iface):
        QDockWidget.__init__(self)
        self.setupUi(self)

        self.iface = iface
        self.canvas = self.iface.mapCanvas()
        self.geoCrs = QgsCoordinateReferenceSystem(4326)

        self.btnAddPhoto.setIcon(QIcon(':/icons/camera.svg'))

        self.txtPhotoComment.setPlaceholderText(self.tr('Comment'))
        self.cmbLayers.setFilters(QgsMapLayerProxyModel.VectorLayer)

        self.db = QSqlDatabase.addDatabase('QPSQL')
        self.landmarkId = None
        self.photoId = None
        self.highlight = None

        self.model = QStandardItemModel()
        self.lstPhotos.setModel(self.model)

        self.btnUpdateLandmark.clicked.connect(self.saveLandmark)
        self.btnDeleteLandmark.clicked.connect(self.deleteLandmark)
        self.btnAddPhoto.clicked.connect(self.addPhoto)
        self.btnUpdatePhoto.clicked.connect(self.savePhoto)
        self.btnDeletePhoto.clicked.connect(self.removePhoto)
        self.lstPhotos.selectionModel().selectionChanged.connect(self.photoSelected)
        self.lstPhotos.doubleClicked.connect(self.showPhoto)

        self._enableOrDisableButtons()
        self.ToggleToolbox()
项目:SacredBrowser    作者:michaelwand    | 项目源码 | 文件源码
def __init__(self):
        super(FieldChoiceWidget,self).__init__()
        self.setSizePolicy (QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)

        # FIXME TODO debug only
#         p = self.palette()
#         p.setColor(self.backgroundRole(), QtCore.Qt.red)
#         self.setPalette(p)
#         self.setAutoFillBackground(True)

        # make submodels - they are filled when reset() is called
        self.availableFields = QtGui.QStandardItemModel()
        self.selectedFields = QtGui.QStandardItemModel()

        # make subwidgets
        self.availableFieldsDisplay = QtGui.QListView()
        self.availableFieldsDisplay.setModel(self.availableFields)
        self.availableFieldsDisplay.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
        self.availableFieldsDisplay.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)


        self.selectedFieldsDisplay = QtGui.QListView()
        self.selectedFieldsDisplay.setModel(self.selectedFields)
        self.selectedFieldsDisplay.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
        self.selectedFieldsDisplay.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)

        self.addButton = QtGui.QPushButton('+')
        self.addButton.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Expanding)
        self.removeButton = QtGui.QPushButton('-')
        self.removeButton.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Expanding)
        self.upButton = QtGui.QPushButton('UP')
        self.upButton.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Expanding)
        self.downButton = QtGui.QPushButton('DOWN')
        self.downButton.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Expanding)

        # connect
        self.addButton.clicked.connect(self.slotAddButtonClicked)
        self.removeButton.clicked.connect(self.slotRemoveButtonClicked)
        self.upButton.clicked.connect(self.slotUpButtonClicked)
        self.downButton.clicked.connect(self.slotDownButtonClicked)
        self.selectedFieldsDisplay.selectionModel().currentChanged.connect(self.slotUpdateButtonStatus)

        # make layout
        self.layout = QtGui.QGridLayout()
        self.layout.addWidget(self.availableFieldsDisplay,0,0,2,1)
        self.layout.addWidget(self.addButton,0,1,1,1)
        self.layout.addWidget(self.removeButton,1,1,1,1)

        self.layout.addWidget(self.selectedFieldsDisplay,0,2,2,1)
        self.layout.addWidget(self.upButton,0,3,1,1)
        self.layout.addWidget(self.downButton,1,3,1,1)

        self.setLayout(self.layout)

        # update button status (should disable everything)
        self.updateButtonStatus()

    # Called when a new data collection is displayed. The data is passed in as text
项目:DicomBrowser    作者:ericspod    | 项目源码 | 文件源码
def fillTagModel(model,dcm,regex=None):
    '''Fill a QStandardItemModel object `model' with a tree derived from tags in `dcm', filtering by pattern `regex'.'''
    try:
        regex=re.compile(str(regex),re.DOTALL)
    except:
        regex='' # no regex or bad pattern

    def _datasetToItem(parent,d):
        '''Add every element in `d' to the QStandardItem object `parent', this will be recursive for list elements.'''
        for elem in d:
            value=_elemToValue(elem)
            tag='(%04x, %04x)'%(elem.tag.group,elem.tag.elem)
            parent1 = QtGui.QStandardItem(str(elem.name))
            tagitem = QtGui.QStandardItem(tag)

            if isinstance(value,str):
                try:
                    value=value.decode('ascii')
                    if '\n' in value or '\r' in value: # multiline text data should be shown as repr
                        value=repr(value)
                except:
                    value=repr(value)

                if not regex or re.search(regex,str(elem.name)+tag+value) is not None:
                    parent.appendRow([parent1,tagitem,QtGui.QStandardItem(value)])

            elif value is not None and len(value)>0:
                parent.appendRow([parent1,tagitem])
                for v in value:
                    parent1.appendRow(v)

    def _elemToValue(elem):
        '''Return the value in `elem', which will be a string or a list of QStandardItem objects if elem.VR=='SQ'.'''
        value=None
        if elem.VR=='SQ':
            value=[]
            for i,item in enumerate(elem):
                parent1 = QtGui.QStandardItem('%s %i'%(elem.name,i))
                _datasetToItem(parent1,item)
                if not regex or parent1.hasChildren(): # discard sequences whose children have been filtered out
                    value.append(parent1)
        elif elem.name!='Pixel Data':
            value=str(elem.value)

        return value        

    _datasetToItem(model,dcm)
项目:DicomBrowser    作者:ericspod    | 项目源码 | 文件源码
def __init__(self,args,parent=None):
        QtGui.QMainWindow.__init__(self,parent)

        self.srclist=[] # list of source directories
        self.imageIndex=0 # index of selected image
        self.seriesMap=OrderedDict() # maps series table row tuples to DicomSeries object it was generated from
        self.seriesColumns=list(seriesListColumns) # keywords for columns
        self.selectedRow=-1 # selected series row
        self.lastDir='.' # last loaded directory root
        self.filterRegex='' # regular expression to filter tags by

        # create the directory queue and loading thread objects
        self.dirQueue=Queue() # queue of directories to load
        self.loadDirThread=threading.Thread(target=self._loadDirsThread)
        self.loadDirThread.daemon=True # clean shutdown possible with daemon threads
        self.loadDirThread.start() # start the thread now, it will wait until something is put on self.dirQueue

        # setup ui
        self.setupUi(self) # create UI elements based on the loaded .ui file
        self.setWindowTitle('DicomBrowser v%s (FOR RESEARCH ONLY)'%(__version__))
        self.setStatus('')

        # connect signals
        self.importButton.clicked.connect(self._openDirDialog)
        self.statusSignal.connect(self.setStatus)
        self.updateSignal.connect(self._updateSeriesTable)
        self.filterLine.textChanged.connect(self._setFilterString)
        self.imageSlider.valueChanged.connect(self.setSeriesImage)
        self.seriesView.clicked.connect(self._seriesTableClicked)

        # setup the list and table models
        self.srcmodel=QStringListModel()
        self.seriesmodel=SeriesTableModel(self.seriesColumns)
        self.seriesmodel.layoutChanged.connect(self._seriesTableResize)
        self.tagmodel=QtGui.QStandardItemModel()

        # assign models to views
        self.sourceListView.setModel(self.srcmodel)
        self.seriesView.setModel(self.seriesmodel)
        self.tagView.setModel(self.tagmodel)

        # create the pyqtgraph object for viewing images
        self.imageview=pg.ImageView()
        layout=QtGui.QGridLayout(self.view2DGroup)
        layout.addWidget(self.imageview)

        # load the empty image placeholder into a ndarray
        qimg=QtGui.QImage(':/icons/noimage.png')
        bytedata=qimg.constBits().asstring(qimg.width()*qimg.height())
        self.noimg=np.ndarray((qimg.width(),qimg.height()),dtype=np.ubyte,buffer=bytedata)

        # add the directories passed as arguments to the directory queue to start loading
        for i in args:
            if os.path.isdir(i):
                self.addSourceDir(i)
项目:MidiMemo    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, main):
        QtGui.QDialog.__init__(self, parent=None)
        _load_ui(self, 'settings.ui')
        self.main = main
        self.settings = self.main.settings

        #load filter settings will go here
        self.event_type_filter = self.settings.gFilters.get_event_type(set(), False)
        self.client_id_filter = self.settings.gFilters.get_client_id(set(), False)
        self.port_id_filter = self.settings.gFilters.get_port_id(set(), False)
        self.port_name_filter = self.settings.gFilters.get_port_name(set(), False)

        self.stop_events = self.settings.gGeneral.get_stop_events(defaults['stop_events'], False)
        self.stop_events_model = QtGui.QStandardItemModel()
        self.stop_events_list.setModel(self.stop_events_model)
        self.stop_events_list.setItemDelegate(self.StopDelegate(self))
        self.stop_events_model.setHorizontalHeaderLabels(['CTRL parameter', 'Value'])
        for param, value in self.stop_events:
            param_item = QtGui.QStandardItem('{} - {}'.format(param, Controllers[param]))
            param_item.setData(param, UserRole)
            value_item = QtGui.QStandardItem(str(value))
            value_item.setData(value, UserRole)
            value_item.setData(QtCore.Qt.AlignHCenter, QtCore.Qt.TextAlignmentRole)
            self.stop_events_model.appendRow([param_item, value_item])
        self.stop_events_list.resizeRowsToContents()
        self.stop_events_list.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch)
        self.stop_events_list.resizeColumnToContents(1)
        self.stop_events_list.selectionChanged = self.stop_events_select
        self.stop_events_add_btn.clicked.connect(self.stop_events_add)
        self.stop_events_del_btn.clicked.connect(self.stop_events_del)

        self.max_rec_spin.setValue(self.settings.gGeneral.max_rec)
        self.minimum_time_spin.setValue(self.settings.gGeneral.minimum_time)
        self.last_event_limit_spin.setValue(self.settings.gGeneral.last_event_limit)
        self.autosave_chk.setChecked(self.settings.gGeneral.autosave)
        self.autosave_path_edit.setText(self.settings.gGeneral.get_autosave_path(''))
        self.tick_res_spin.setValue(self.settings.gGeneral.tick_res)

        self.autosave_chk.toggled.connect(self.autosave_set)
        self.autosave_path_btn.clicked.connect(self.autosave_path)

        self.allnotes_chk.clicked.connect(self.allnotes_click)
        self.noteon_chk.toggled.connect(self.note_toggled)
        self.noteon_chk.toggled.connect(lambda state: self.filter_event_set(NOTEON, state))
        self.noteoff_chk.toggled.connect(self.note_toggled)
        self.noteoff_chk.toggled.connect(lambda state: self.filter_event_set(NOTEOFF, state))
        self.ctrl_chk.toggled.connect(lambda state: self.filter_event_set(CTRL, state))
        self.pitchbend_chk.toggled.connect(lambda state: self.filter_event_set(PITCHBEND, state))
        self.aftertouch_chk.toggled.connect(lambda state: self.filter_event_set(AFTERTOUCH, state))
        self.polyaftertouch_chk.toggled.connect(lambda state: self.filter_event_set(POLY_AFTERTOUCH, state))
        self.program_chk.toggled.connect(lambda state: self.filter_event_set(PROGRAM, state))
        self.sysex_chk.toggled.connect(lambda state: self.filter_event_set(SYSEX, state))

        self.build_models()

        self.buttonBox.button(QtGui.QDialogButtonBox.RestoreDefaults).clicked.connect(self.defaults)
        self.buttonBox.button(QtGui.QDialogButtonBox.Apply).clicked.connect(self.check_changes)
        self.accepted.connect(self.check_changes)
项目:MidiMemo    作者:MaurizioB    | 项目源码 | 文件源码
def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        _load_ui(self, 'export.ui')
        self.main = parent
        self.seq = self.main.seq
        self.src_bpm = self.main.src_bpm_spin.value()
        self.dest_bpm = self.main.dest_bpm_spin.value()
        self.file_name = ''
        self.filter = {'event_type': set(), 'port': set()}
        self.filled = False

        self.event_widgets = {
                   NOTEON: self.noteon_chk, NOTEOFF: self.noteoff_chk, 
                   CTRL: self.ctrl_chk, PITCHBEND: self.pitchbend_chk, 
                   AFTERTOUCH: self.aftertouch_chk, POLY_AFTERTOUCH: self.polyaftertouch_chk, 
                   PROGRAM: self.program_chk, SYSEX: self.sysex_chk, 
                   }

        self.src_model = QtGui.QStandardItemModel()
        self.src_listview.setModel(self.src_model)
        self.dest_model = QtGui.QStandardItemModel()
        self.dest_listview.setModel(self.dest_model)

        self.dest_listview.setItemDelegate(self.DestDelegate(self))
        self.src_listview.mouseDoubleClickEvent = self.src_dblclick
        self.dest_listview.mouseDoubleClickEvent = self.dest_dblclick
        self.dest_model.rowsRemoved.connect(self.reset_links)
        self.dest_model.dataChanged.connect(self.dest_update)
        self.dest_listview.viewportEvent = self.dest_viewportEvent
        self.dest_listview.customContextMenuRequested.connect(self.dest_menu)
        self.buttonBox.button(QtGui.QDialogButtonBox.Save).clicked.disconnect()
        self.buttonBox.button(QtGui.QDialogButtonBox.Save).clicked.connect(self.export)
        self.buttonBox.button(QtGui.QDialogButtonBox.Save).setText('Export')
        self.main.src_bpm_spin.valueChanged.connect(self.main_tempo_change)
        self.main.dest_bpm_spin.valueChanged.connect(self.main_tempo_change)
        self.main.ratio_changed.connect(self.main_tempo_change)
        self.src_bpm_spin.valueChanged.connect(lambda value: setattr(self, 'src_bpm', value))
        self.dest_bpm_spin.valueChanged.connect(lambda value: setattr(self, 'dest_bpm', value))
        self.allnotes_chk.clicked.connect(self.allnotes_click)
        self.noteon_chk.toggled.connect(self.note_toggled)
        self.noteon_chk.toggled.connect(lambda state: self.filter_set(NOTEON, state))
        self.noteoff_chk.toggled.connect(self.note_toggled)
        self.noteoff_chk.toggled.connect(lambda state: self.filter_set(NOTEOFF, state))
        self.ctrl_chk.toggled.connect(lambda state: self.filter_set(CTRL, state))
        self.pitchbend_chk.toggled.connect(lambda state: self.filter_set(PITCHBEND, state))
        self.aftertouch_chk.toggled.connect(lambda state: self.filter_set(AFTERTOUCH, state))
        self.polyaftertouch_chk.toggled.connect(lambda state: self.filter_set(POLY_AFTERTOUCH, state))
        self.program_chk.toggled.connect(lambda state: self.filter_set(PROGRAM, state))
        self.sysex_chk.toggled.connect(lambda state: self.filter_set(SYSEX, state))
        self.main.filterChanged.connect(self.filter_update)
        self.main.filterReset.connect(self.filter_reset)
        self.close_chk = QtGui.QCheckBox('Close this window after export')
        self.close_chk.setChecked(True)
        self.buttonBox.layout().insertWidget(1, self.close_chk)
        for chk in self.event_widgets.values():
            chk.toggled.connect(self.export_check)