def add_widgets(self): # Main window with dock area self.dock_area = DockArea() self.setCentralWidget(self.dock_area) dock_run_config = Dock("Run configuration", size=(400, 400)) # Docks dock_occcupancy = Dock("Occupancy", size=(400, 400)) #dock_tti = Dock("tti",size=(400, 400)) self.dock_area.addDock(dock_occcupancy) # Status widget cw = QtGui.QWidget() cw.setStyleSheet("QWidget {background-color:white}") layout = QtGui.QGridLayout() cw.setLayout(layout) # Run config dock self.run_conf_list_widget = Qt.QListWidget() dock_run_config.addWidget(self.run_conf_list_widget) # Global config dock self.global_conf_list_widget = Qt.QListWidget() # Different plot docks occupancy_graphics = pg.GraphicsLayoutWidget() occupancy_graphics.show() view = occupancy_graphics.addViewBox() self.occupancy_img = pg.ImageItem(border='w') view.addItem(self.occupancy_img) view.setRange(QtCore.QRectF(0, 0, 80, 336)) dock_occcupancy.addWidget(occupancy_graphics)
def __init__(self): super().__init__() self.setWindowTitle('Sniff with scapy') self.lw_packet = Qt.QListWidget() self.cb_log = Qt.QCheckBox('Write log') self.cb_log.setChecked(True) self.pb_clear = Qt.QPushButton('Clear') self.pb_clear.clicked.connect(self.lw_packet.clear) self.cb_autoscroll = Qt.QCheckBox('Autoscroll') layout = Qt.QHBoxLayout() layout.addWidget(self.cb_log) layout.addWidget(self.cb_autoscroll) layout.addStretch() layout.addWidget(self.pb_clear) main_layout = Qt.QVBoxLayout() main_layout.addLayout(layout) main_layout.addWidget(self.lw_packet) central_widget = Qt.QWidget() central_widget.setLayout(main_layout) self.setCentralWidget(central_widget) self.thread = SniffThread() self.thread.about_new_data.connect(self._append_new_item) self.thread.start()
def __init__(self, title, **kwargs): """ Create widget. Arguments: title (str): Category title. **kwargs: Arbitrary keyword arguments. """ super(CategoryView, self).__init__(**kwargs) self._title = title self._expanded = True self._button = Q.QToolButton(self) self._button.setToolButtonStyle(Q.Qt.ToolButtonTextBesideIcon) self._button.setSizePolicy(Q.QSizePolicy.MinimumExpanding, Q.QSizePolicy.Fixed) self._list = Q.QListWidget(self) self._list.setTextElideMode(Q.Qt.ElideMiddle) self._list.setHorizontalScrollBarPolicy(Q.Qt.ScrollBarAlwaysOff) self._list.setVerticalScrollBarPolicy(Q.Qt.ScrollBarAlwaysOff) v_layout = Q.QVBoxLayout(self) v_layout.setContentsMargins(0, 0, 0, 0) v_layout.setSpacing(0) v_layout.addWidget(self._button) v_layout.addWidget(self._list) self._button.clicked.connect(self._toggled) self._list.itemSelectionChanged.connect(self._selectionChanged) self._list.itemDoubleClicked.connect(self._doubleClicked) self._adjustSize() self._updateState()
def __init__(self): SettingsTabBase.__init__(self, "Presets") self.lw_directory = Qt.QListWidget() self.lw_directory.setMaximumHeight(100) self.pb_add = Qt.QPushButton(Qt.QIcon(":/add.png"), "") self.pb_remove = Qt.QPushButton(Qt.QIcon(":/remove.png"), "") self.pb_browse = Qt.QPushButton(Qt.QIcon(":/folder.png"), "") self.pb_reset = Qt.QPushButton(Qt.QIcon(":/reset.png"), "") self.pb_add.clicked.connect(self.add) self.pb_remove.clicked.connect(self.remove) self.pb_reset.clicked.connect(self.reset) self.pb_browse.clicked.connect(self.browse) bottom_layout = Qt.QHBoxLayout() bottom_layout.addWidget(self.pb_add) bottom_layout.addWidget(self.pb_remove) bottom_layout.addWidget(self.pb_browse) bottom_layout.addStretch() bottom_layout.addWidget(self.pb_reset) layout = Qt.QVBoxLayout() layout.addWidget(Qt.QLabel("Additionnal presets directory:")) layout.addWidget(self.lw_directory) layout.addLayout(bottom_layout) self.set_layout(layout)
def initUI(self): self.pathList = Qt.QListWidget() # Create Main Widgets self.createActions() self.createMenuBar() self.createToolBar() self.createStatusBar() # Create all connections after initializing self.createConnections() self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Dupliate File Finder') self.setCentralWidget(self.pathList) # Set delete option to false since no paths are set initially self.deletePathAct.setEnabled(False) self.show()
def loadUI(self): self.win = Qt.QMainWindow() self.win.setWindowFlags(self.win.windowFlags() | Qt.Qt.Tool | Qt.Qt.FramelessWindowHint | Qt.Qt.Popup) #self.win.keyPressEvent = self.keyEventCatcher self.mainWidget = Qt.QWidget() self.layout = Qt.QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.mainWidget.setContentsMargins(0, 0, 0, 0) self.win.setContentsMargins(0, 0, 0, 0) self.timer = Qt.QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.filterSuggestions) # The timer provides a delay of 200ms between user typing and list filtering self.entry = QEventCatcherEntry(catcher_fn=self.keyEventCatcher) self.entry.textEdited.connect(self.textEdited) self.layout.addWidget(self.entry) self.suggestion_list = Qt.QListWidget() self.suggestion_list.setSortingEnabled(False) self.layout.addWidget(self.suggestion_list) self.currentlySelectedIndex = Index(0, maxval=0) self.layout.setSizeConstraint(Qt.QLayout.SetFixedSize) self.mainWidget.setLayout(self.layout) self.win.setCentralWidget(self.mainWidget) self.adjustSizes()
def add_widgets(self): # Main window with dock area self.dock_area = DockArea() self.setCentralWidget(self.dock_area) # Docks dock_occcupancy = Dock("Occupancy", size=(400, 400)) dock_run_config = Dock("Run configuration", size=(400, 400)) dock_global_config = Dock("Global configuration", size=(400, 400)) dock_tot = Dock("ToT", size=(400, 400)) dock_tdc = Dock("TDC", size=(400, 400)) dock_tdc_distance = Dock("TDC distance", size=(400, 400)) dock_event_status = Dock("Event status", size=(400, 400)) dock_trigger_status = Dock("Trigger status", size=(400, 400)) dock_service_records = Dock("Service records", size=(400, 400)) dock_hit_timing = Dock("Hit timing (rel. BCID)", size=(400, 400)) dock_status = Dock("Status", size=(800, 40)) self.dock_area.addDock(dock_global_config, 'left') self.dock_area.addDock(dock_run_config, 'above', dock_global_config) self.dock_area.addDock(dock_occcupancy, 'above', dock_run_config) self.dock_area.addDock(dock_tdc_distance, 'right', dock_occcupancy) self.dock_area.addDock(dock_tdc, 'above', dock_tdc_distance) self.dock_area.addDock(dock_tot, 'above', dock_tdc) self.dock_area.addDock(dock_service_records, 'bottom', dock_occcupancy) self.dock_area.addDock(dock_trigger_status, 'above', dock_service_records) self.dock_area.addDock(dock_event_status, 'above', dock_trigger_status) self.dock_area.addDock(dock_hit_timing, 'bottom', dock_tot) self.dock_area.addDock(dock_status, 'top') # Status widget cw = QtGui.QWidget() cw.setStyleSheet("QWidget {background-color:white}") layout = QtGui.QGridLayout() cw.setLayout(layout) self.rate_label = QtGui.QLabel("Readout Rate\n0 Hz") self.hit_rate_label = QtGui.QLabel("Hit Rate\n0 Hz") self.event_rate_label = QtGui.QLabel("Event Rate\n0 Hz") self.timestamp_label = QtGui.QLabel("Data Timestamp\n") self.plot_delay_label = QtGui.QLabel("Plot Delay\n") self.scan_parameter_label = QtGui.QLabel("Scan Parameters\n") self.spin_box = Qt.QSpinBox(value=1) self.spin_box.setMaximum(1000000) self.spin_box.setSuffix(" Readouts") self.reset_button = QtGui.QPushButton('Reset') layout.addWidget(self.timestamp_label, 0, 0, 0, 1) layout.addWidget(self.plot_delay_label, 0, 1, 0, 1) layout.addWidget(self.rate_label, 0, 2, 0, 1) layout.addWidget(self.hit_rate_label, 0, 3, 0, 1) layout.addWidget(self.event_rate_label, 0, 4, 0, 1) layout.addWidget(self.scan_parameter_label, 0, 5, 0, 1) layout.addWidget(self.spin_box, 0, 6, 0, 1) layout.addWidget(self.reset_button, 0, 7, 0, 1) dock_status.addWidget(cw) # Run config dock self.run_conf_list_widget = Qt.QListWidget() dock_run_config.addWidget(self.run_conf_list_widget) # Global config dock self.global_conf_list_widget = Qt.QListWidget() dock_global_config.addWidget(self.global_conf_list_widget) # Different plot docks occupancy_graphics = pg.GraphicsLayoutWidget() occupancy_graphics.show() view = occupancy_graphics.addViewBox() self.occupancy_img = pg.ImageItem(border='w') view.addItem(self.occupancy_img) view.setRange(QtCore.QRectF(0, 0, 80, 336)) dock_occcupancy.addWidget(occupancy_graphics) tot_plot_widget = pg.PlotWidget(background="w") self.tot_plot = tot_plot_widget.plot(np.linspace(-0.5, 15.5, 17, endpoint=True), np.zeros((16)), stepMode=True) tot_plot_widget.showGrid(y=True) dock_tot.addWidget(tot_plot_widget) tdc_plot_widget = pg.PlotWidget(background="w") self.tdc_plot = tdc_plot_widget.plot(np.linspace(-0.5, 4095.5, 4097, endpoint=True), np.zeros((4096)), stepMode=True) tdc_plot_widget.showGrid(y=True) tdc_plot_widget.setXRange(0, 800, update=True) dock_tdc.addWidget(tdc_plot_widget) tdc_distance_plot_widget = pg.PlotWidget(background="w") self.tdc_distance_plot = tdc_distance_plot_widget.plot(np.linspace( -0.5, 255.5, 257, endpoint=True), np.zeros((256)), stepMode=True) tdc_distance_plot_widget.showGrid(y=True) tdc_distance_plot_widget.setXRange(0, 800, update=True) dock_tdc_distance.addWidget(tdc_distance_plot_widget) event_status_widget = pg.PlotWidget() self.event_status_plot = event_status_widget.plot(np.linspace( -0.5, 15.5, 17, endpoint=True), np.zeros((16)), stepMode=True) event_status_widget.showGrid(y=True) dock_event_status.addWidget(event_status_widget) trigger_status_widget = pg.PlotWidget() self.trigger_status_plot = trigger_status_widget.plot(np.linspace( -0.5, 7.5, 9, endpoint=True), np.zeros((8)), stepMode=True) trigger_status_widget.showGrid(y=True) dock_trigger_status.addWidget(trigger_status_widget) service_record_widget = pg.PlotWidget() self.service_record_plot = service_record_widget.plot(np.linspace( -0.5, 31.5, 33, endpoint=True), np.zeros((32)), stepMode=True) service_record_widget.showGrid(y=True) dock_service_records.addWidget(service_record_widget) hit_timing_widget = pg.PlotWidget() self.hit_timing_plot = hit_timing_widget.plot(np.linspace( -0.5, 15.5, 17, endpoint=True), np.zeros((16)), stepMode=True) hit_timing_widget.showGrid(y=True) dock_hit_timing.addWidget(hit_timing_widget)
def __init__(self, plugin, gui, icon): Qt.QDialog.__init__(self, gui) self.plugin = plugin self.gui = gui self.full_db = gui.current_db self.db = gui.current_db.new_api self.setWindowTitle(TITLE) self.setWindowIcon(icon) self.setWindowFlags(QtCore.Window | QtCore.WindowTitleHint | QtCore.CustomizeWindowHint) self.layout = Qt.QVBoxLayout() self.setLayout(self.layout) self.search_label = Qt.QLabel('Enter text to search in content') self.layout.addWidget(self.search_label) self.search_text_layout = Qt.QHBoxLayout() self.search_textbox = Qt.QComboBox(self) self.search_textbox.setMinimumWidth(400) self.search_textbox.setEditable(True) self.search_textbox.setInsertPolicy(Qt.QComboBox.NoInsert) for _, value in sorted(prefs.get('search_lru', {}).items()): self.search_textbox.addItem(value) self.search_textbox.setEditText('') self.search_textbox.editTextChanged.connect( self.on_search_text_changed) self.search_label.setBuddy(self.search_textbox) self.search_text_layout.addWidget(self.search_textbox) self.search_help_button = Qt.QPushButton('?', self) fixed_size_policy = self.search_help_button.sizePolicy() fixed_size_policy.setHorizontalPolicy(QtWidgets.QSizePolicy.Fixed) self.search_help_button.setSizePolicy(fixed_size_policy) self.search_help_button.clicked.connect(self.on_search_help) self.search_text_layout.addWidget(self.search_help_button) self.layout.addLayout(self.search_text_layout) self.search_button = Qt.QPushButton('&Search', self) self.search_button.setEnabled(False) self.search_button.setDefault(True) self.search_button.clicked.connect(self.on_search) self.layout.addWidget(self.search_button) self.cancel_button = Qt.QPushButton('&Cancel', self) self.cancel_button.clicked.connect(self.on_cancel) self.cancel_button.setVisible(False) self.layout.addWidget(self.cancel_button) self.status_label = Qt.QLabel() self.status_label.setAlignment(QtCore.AlignCenter) self.layout.addWidget(self.status_label) self.progress_bar = Qt.QProgressBar(self) self.progress_bar.setVisible(False) retain_size_policy = self.progress_bar.sizePolicy() retain_size_policy.setRetainSizeWhenHidden(True) self.progress_bar.setSizePolicy(retain_size_policy) self.layout.addWidget(self.progress_bar) self.details_button = Qt.QPushButton('&Details', self) self.details_button.setVisible(False) retain_size_policy = self.details_button.sizePolicy() retain_size_policy.setRetainSizeWhenHidden(True) self.details_button.setSizePolicy(retain_size_policy) self.details_button.setFlat(True) self.details_button.setStyleSheet('text-align: left') icon = get_icons('images/right-arrow.png') self.details_button.setIcon(icon) self.details_button.clicked.connect(self.on_details) self.layout.addWidget(self.details_button) self.details = Qt.QListWidget(self) self.details.setVisible(False) self.layout.addWidget(self.details) self.layout.addStretch() self.reindex_layout = Qt.QHBoxLayout() self.reindex_button = Qt.QPushButton('&Reindex new books', self) self.reindex_button.clicked.connect(self.on_reindex) self.reindex_layout.addWidget(self.reindex_button) self.reindex_all_button = Qt.QPushButton('&Reindex all books', self) self.reindex_all_button.clicked.connect(self.on_reindex_all) self.reindex_layout.addWidget(self.reindex_all_button) self.layout.addLayout(self.reindex_layout) self.conf_button = Qt.QPushButton('&Options...', self) self.conf_button.clicked.connect(self.on_config) self.layout.addWidget(self.conf_button) self.readme_button = Qt.QPushButton('&Readme...', self) self.readme_button.clicked.connect(self.on_readme) self.layout.addWidget(self.readme_button) self.close_button = Qt.QPushButton('&Close', self) self.close_button.clicked.connect(self.close) self.layout.addWidget(self.close_button) self.thread_pool = Qt.QThreadPool() self.add_workers_submitted = 0 self.add_workers_complete = 0 self.delete_workers_submitted = 0 self.delete_workers_complete = 0 self.first_paint = True self.pdftotext_full_path = None if 'version' not in prefs: file_formats = set(prefs['file_formats'].split(',') + ARCHIVE_FORMATS) prefs['file_formats'] = ','.join(file_formats) prefs['version'] = CapsPlugin.version
def __init__(self, *args): Qt.QMainWindow.__init__(self, *args) self.calibrator=None self.calibration=Calibration() d=AnalysisData() d.Tgamma=0.0 """ calibration values: Only the NE213 spectra are calibrated. Calibration is stored in a dict() The following keys are known: 'EADC': adc used for calibrating energy 'TADC': adc used for calibrating TOF 'slope': gamma calibration slope in MeVee/ch 'intercept': gamma calibration intercept in MeVee 'TAC': TDC slope in ns/ch 'Tgamma': Time of gamma burst in raw TOF, used to calc T0 """ self.mainwin=Qt.QSplitter(self) self.logwin=Qt.QListWidget(self) vlayout=Qt.QVBoxLayout() vlayout.addWidget(self.mainwin) label=self.makeLabel("Analysis log") vlayout.addWidget(label) vlayout.addWidget(self.logwin) self.setGeometry(10,10,1024,768) #self.setCentralWidget(self.mainwin) w=Qt.QWidget() w.setLayout(vlayout) self.setCentralWidget(w) logstream=ListLogger(self.logwin) loghandler=logging.StreamHandler(logstream) loghandler.setFormatter(logging.Formatter(fmt='%(asctime)s : %(levelname)s : %(message)s')) logger.addHandler(loghandler) self.filewidget=Qt.QWidget() vlayout=Qt.QVBoxLayout() from .fileentry import FilePicker self.filepick=FilePicker() label=self.makeLabel("Analysis Files") vlayout.addWidget(label) vlayout.addWidget(self.filepick) vlayout.setContentsMargins(1,1,1,1) # cut down margins from 11px self.filewidget.setLayout(vlayout) self.mainwin.addWidget(self.filewidget) self.taskwidget=Qt.QWidget() vlayout=Qt.QVBoxLayout() self.tasklist=Qt.QListWidget(self) self.tasklistitems={} # keep a dict of these, may expand in future for task in analysis_tasks: item=Qt.QListWidgetItem(task,self.tasklist) item.setFlags(item.flags()&~QtCore.Qt.ItemIsEnabled) self.tasklistitems[task]=item self.tasklist.setDragDropMode(Qt.QAbstractItemView.InternalMove) label=self.makeLabel("Task list") vlayout.addWidget(label) vlayout.addWidget(self.tasklist) vlayout.setContentsMargins(1,1,1,1) # cut down margins from 11px self.taskwidget.setLayout(vlayout) self.mainwin.addWidget(self.taskwidget) # set up user interface self.setupMenuBar() # toolbar example code taken from dualscopeN.py toolBar = Qt.QToolBar(self) self.addToolBar(toolBar) sb=self.statusBar() sbfont=Qt.QFont("Helvetica",12) sb.setFont(sbfont) sb.showMessage("Status=1") # !! use addAction instead ? self.btnOpenExpt = Qt.QToolButton(toolBar) self.btnOpenExpt.setText("Open expt") self.btnOpenExpt.setIcon(Qt.QIcon(Qt.QPixmap(icons.stopicon))) #self.btnOpenExpt.setCheckable(True) self.btnOpenExpt.setToolButtonStyle(Qt.Qt.ToolButtonTextUnderIcon) self.btnOpenExpt.setToolTip("Open list of experiment file names") toolBar.addWidget(self.btnOpenExpt) self.btnSaveExpt = Qt.QToolButton(toolBar) self.btnSaveExpt.setText("Save expt") self.btnSaveExpt.setIcon(self.style().standardIcon(Qt.QStyle.SP_DriveFDIcon)) self.btnSaveExpt.setToolButtonStyle(Qt.Qt.ToolButtonTextUnderIcon) self.btnSaveExpt.setToolTip("Save list of experiment file names") toolBar.addWidget(self.btnSaveExpt) """ self.btnPrint = Qt.QToolButton(toolBar) self.btnPrint.setText("Print") self.btnPrint.setIcon(Qt.QIcon(Qt.QPixmap(icons.print_xpm))) self.btnPrint.setToolButtonStyle(Qt.Qt.ToolButtonTextUnderIcon) self.btnPrint.setToolTip("One day, may print something") toolBar.addWidget(self.btnPrint) """ self.btnSaveData = Qt.QToolButton(toolBar) self.btnSaveData.setText("data") self.btnSaveData.setIcon(Qt.QIcon(packagepath[0]+"/images/drive.png")) self.btnSaveData.setToolButtonStyle(Qt.Qt.ToolButtonTextUnderIcon) self.btnSaveData.setToolTip("Save all histogram data to hdf file") toolBar.addWidget(self.btnSaveData) toolBar.addSeparator() self.maxeventcount=None self.lblMaxevent = Qt.QLabel("Max event count:",toolBar) self.lblMaxevent.setToolTip("Set maximum number of events sorted, or None") toolBar.addWidget(self.lblMaxevent) self.editMaxevent = Qt.QLineEdit(toolBar) self.editMaxevent.setFixedWidth(100) self.editMaxevent.editingFinished.connect(self.setMaxEvent) self.editMaxevent.setText("None") toolBar.addWidget(self.editMaxevent) # set up a model for spectra plots self.plotwidget=Qt.QWidget() vlayout=Qt.QVBoxLayout() self.plotview=PlotTreeView(self) self.plotmodel=PlotTreeModel(self) self.plotview.setModel(self.plotmodel) self.plotview.setDragDropMode(Qt.QAbstractItemView.InternalMove) label=self.makeLabel("Plot list") vlayout.addWidget(label) vlayout.addWidget(self.plotview) vlayout.setContentsMargins(1,1,1,1) # cut down margins from 11px self.plotwidget.setLayout(vlayout) self.mainwin.addWidget(self.plotwidget) # connect signals self.tasklist.doubleClicked.connect(self.runTask) self.filepick.fileChanged.connect(self.setFilePaths) self.filepick.dataChanged.connect(self.setAnalysisData) self.filepick.valueChanged.connect(self.setFilePaths) self.btnOpenExpt.clicked.connect(self.openFile) self.btnSaveExpt.clicked.connect(self.saveFile) self.btnSaveData.clicked.connect(self.saveDataAsHDF) self.bthread = None
def _update_form(self): payload = self.session.first_payload if not isinstance(payload, aioxmpp.forms.Data): self.ui.form_widget.hide() return self.ui.form_widget.show() if payload.title: self.ui.title.show() self.ui.title.setText(payload.title) else: self.ui.title.hide() if payload.instructions: self.ui.instructions.show() self.ui.instructions.setText("<p>{}</p>".format("</p><p>".join( map(html.escape, payload.instructions)))) else: self.ui.instructions.hide() if self.form_area is not None: self.ui.form_widget.layout().removeWidget(self.form_area) self.ui.form_widget.children().remove(self.form_area) self.form_area.deleteLater() self.form_area = Qt.QScrollArea() layout = Qt.QFormLayout() self.form_area.setLayout(layout) self.ui.form_widget.layout().addWidget(self.form_area) self.fieldmap = {} for field in payload.fields: if field.var == "FORM_TYPE": continue label, widget = None, None if field.type_ == aioxmpp.forms.FieldType.FIXED: label = Qt.QLabel(field.values[0]) layout.addRow(label) elif field.type_ in { aioxmpp.forms.FieldType.LIST_SINGLE, aioxmpp.forms.FieldType.LIST_MULTI }: label = Qt.QLabel(field.label) widget = Qt.QListWidget() for opt_value, opt_label in sorted(field.options.items()): item = Qt.QListWidgetItem(opt_label, widget) item.setData(Qt.Qt.UserRole, opt_value) widget.addItem(item) if field.type_.is_multivalued: widget.setSelectionMode( Qt.QAbstractItemView.MultiSelection) else: widget.setSelectionMode( Qt.QAbstractItemView.SingleSelection) layout.addRow(label, widget) elif field.type_ in { aioxmpp.forms.FieldType.TEXT_SINGLE, aioxmpp.forms.FieldType.JID_SINGLE }: label = Qt.QLabel(field.label) widget = Qt.QLineEdit() if field.values: widget.setText(field.values[0]) layout.addRow(label, widget) elif field.type_ in {aioxmpp.forms.FieldType.TEXT_PRIVATE}: label = Qt.QLabel(field.label) widget = Qt.QLineEdit() widget.setEchoMode(Qt.QLineEdit.Password) widget.setInputMethodHints(Qt.Qt.ImhHiddenText | Qt.Qt.ImhNoPredictiveText | Qt.Qt.ImhNoAutoUppercase) if field.values: widget.setText(field.values[0]) layout.addRow(label, widget) elif field.type_ in { aioxmpp.forms.FieldType.TEXT_MULTI, aioxmpp.forms.FieldType.JID_MULTI }: label = Qt.QLabel(field.label) widget = Qt.QTextEdit() widget.setText("\n".join(field.values)) widget.setAcceptRichText(False) layout.addRow(label, widget) else: self.fail("unhandled field type: {}".format(field.type_)) self.fieldmap[field.var] = label, widget
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'ipetrash' from PyQt5 import Qt app = Qt.QApplication([]) w = Qt.QListWidget() w.addItems(['item #{}'.format(_) for _ in range(100)]) w.setStyleSheet(""" QScrollBar:vertical { border: 2px solid grey; background: #32CC99; } """) w.show() app.exec()