class MainWindow(QWidget): ''' Объявление UI для программы ''' def __init__(self, parent): super(MainWindow, self).__init__() self._width = 360 self._height = 320 self.setMinimumSize(self._width, self._height) self.setMaximumSize(self._width, self._height) #self.resize(self._width, self._height) self.setWindowTitle('0-бед or 0-bet') self.VBox = QVBoxLayout(self) self.VBox.setContentsMargins(5, 5, 5, 5) self.restText = QLabel(self) self.restText.setText("Список заведений: ") self.restTable = QTableView(self) self.sep1 = QFrame(self) self.sep1.setFrameShape(QFrame.HLine) self.sep1.setFrameShadow(QFrame.Sunken) self.restUnitName = QLineEdit(self) self.restAddButt = QPushButton(self) self.restAddButt.setText('Добавить заведение') self.restRmvButt = QPushButton(self) self.restRmvButt.setText('Удалить заведение') self.sep2 = QFrame(self) self.sep2.setFrameShape(QFrame.HLine) self.sep2.setFrameShadow(QFrame.Sunken) self.restLotteryButt = QPushButton(self) self.restLotteryButt.setText('Лотерея') self.VBox.addWidget(self.restText) self.VBox.addWidget(self.restTable) self.VBox.addWidget(self.sep1) self.VBox.addWidget(self.restUnitName) self.VBox.addWidget(self.restAddButt) self.VBox.addWidget(self.restRmvButt) self.VBox.addWidget(self.sep2) self.VBox.addWidget(self.restLotteryButt) self.setLayout(self.VBox) self.restAddButt.clicked.connect(self.addRestItem) self.restLotteryButt.clicked.connect(self.startLottery) self.restRmvButt.clicked.connect(self.removeRestItem) self.restTable.clicked.connect(self.selectRest) self.name_list = [] self.reqCount_list = [] self.sg = Sig() parent.sg.updateTable.connect(self.updTbl) def addRestItem(self): name = self.restUnitName.text() if name in self.name_list: self.reqCount_list[self.name_list.index( name)] = self.reqCount_list[self.name_list.index(name)] + 1 else: self.name_list.append(name) self.reqCount_list.append(1) table_model = RestaurantTableModeL(self.name_list, self.reqCount_list) self.restTable.setModel(table_model) self.restTable.horizontalHeader().setSectionResizeMode( QHeaderView.ResizeToContents) self.restTable.horizontalHeader().setStretchLastSection(True) def startLottery(self): self.sg.lists.emit(self.name_list, self.reqCount_list) def selectRest(self): self.idx = self.restTable.currentIndex() self.restTable.selectRow(self.idx.row()) def removeRestItem(self): self.idx = self.restTable.currentIndex() if self.reqCount_list[self.idx.row()] > 1: self.reqCount_list[self.idx.row()] -= 1 else: self.name_list.pop(self.idx.row()) self.reqCount_list.pop(self.idx.row()) table_model = RestaurantTableModeL(self.name_list, self.reqCount_list) self.restTable.setModel(table_model) self.restTable.horizontalHeader().setSectionResizeMode( QHeaderView.ResizeToContents) self.restTable.horizontalHeader().setStretchLastSection(True) @Slot(list) def updTbl(self, cnt): table_model = RestaurantTableModeL(self.name_list, self.reqCount_list, cnt) self.restTable.setModel(table_model) self.restTable.horizontalHeader().setSectionResizeMode( QHeaderView.ResizeToContents) self.restTable.horizontalHeader().setStretchLastSection(True)
class XDFStreamsDialog(QDialog): def __init__(self, parent, rows, selected=None, disabled=None): super().__init__(parent) self.setWindowTitle("Select XDF Stream") self.model = QStandardItemModel() self.model.setHorizontalHeaderLabels( ["ID", "Name", "Type", "Channels", "Format", "Sampling Rate"]) for index, stream in enumerate(rows): items = [] for item in stream: tmp = QStandardItem() tmp.setData(item, Qt.DisplayRole) items.append(tmp) for item in items: item.setEditable(False) if disabled is not None and index in disabled: item.setFlags(Qt.NoItemFlags) self.model.appendRow(items) self.view = QTableView() self.view.setModel(self.model) self.view.verticalHeader().setVisible(False) self.view.horizontalHeader().setStretchLastSection(True) self.view.setShowGrid(False) self.view.setSelectionMode(QAbstractItemView.SingleSelection) self.view.setSelectionBehavior(QAbstractItemView.SelectRows) if selected is not None: self.view.selectRow(selected) self.view.setSortingEnabled(True) self.view.sortByColumn(0, Qt.AscendingOrder) vbox = QVBoxLayout(self) vbox.addWidget(self.view) hbox = QHBoxLayout() self._effective_srate = QCheckBox("Use effective sampling rate") self._effective_srate.setChecked(True) hbox.addWidget(self._effective_srate) self._prefix_markers = QCheckBox("Prefix markers with stream ID") self._prefix_markers.setChecked(False) if not disabled: self._prefix_markers.setEnabled(False) hbox.addWidget(self._prefix_markers) vbox.addLayout(hbox) self.buttonbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) vbox.addWidget(self.buttonbox) self.buttonbox.accepted.connect(self.accept) self.buttonbox.rejected.connect(self.reject) self.resize(775, 650) self.view.setColumnWidth(0, 90) self.view.setColumnWidth(1, 200) self.view.setColumnWidth(2, 140) @property def effective_srate(self): return self._effective_srate.isChecked() @property def prefix_markers(self): return self._prefix_markers.isChecked()