def edit_team(self): datas = get_team_datas() head_lst = ['索引号', '队名', '项目', '分组'] if datas: self.takeCentralWidget() main_frame = QScrollArea(self) main_frame.setStyleSheet( 'QWidget{background-color:rgb(255,255,255)}') self.player_tabview = QTableView() r, c = len(datas), len(datas[0]) self.player_model = QStandardItemModel(r, c) self.player_model.setHorizontalHeaderLabels(head_lst) for r, rdata in enumerate(datas): for c, cell in enumerate(rdata): it = QStandardItem(str(cell)) if c == 0: it.setEditable(False) self.player_model.setItem(r, c, it) # keys = ['id','name','idcode','sex','age','work_place','tel'] # edit_cell = functools.partial(self.edit_cell,obj,keys) # self.player_model.itemChanged.connect(edit_cell) self.player_tabview.setModel(self.player_model) boxlayout = QVBoxLayout() # boxlayout.addStretch(1) boxlayout.addWidget(self.player_tabview, 18) # boxlayout.addStretch(1) del_btn = QPushButton('删除') del_btn.clicked.connect(self.del_team) boxlayout.addWidget(del_btn) main_frame.setLayout(boxlayout) self.setCentralWidget(main_frame)
def __init__(self, main_window, queue): super(GUIManager, self).__init__() # main window self.w = main_window # main window decoration self.w.setGeometry(0, 0, 800, 600) self.w.setWindowTitle("Testbed GUI") self.w.setWindowIcon(QIcon('icons/animals-whale.png')) # the network data table model self.network_data_table_model = NetworkDataTableModel(queue) # the proxy model self.proxy_model = QSortFilterProxyModel() # the network data table self.network_table = QTableView() self.network_table.setSortingEnabled(True) self.network_table.setSelectionMode(QAbstractItemView.NoSelection) self.proxy_model.setSourceModel(self.network_data_table_model) self.network_table.setModel(self.proxy_model) self.w.setCentralWidget(self.network_table)
def initUI(self): # 表格视图控件 self.view = QTableView() # 使用QStandardItemModel(row,col) self.model = QStandardItemModel(4, 3) self.model.setHorizontalHeaderLabels(["列1", "列2", "列3"]) self.model.setItem(0, 0, QStandardItem("1")) self.model.setItem(1, 0, QStandardItem("2")) self.model.setItem(2, 0, QStandardItem("3")) self.view.setModel(self.model) # 设置表格头部占满窗体 self.view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 设置是否可编辑 self.view.setEditTriggers(QAbstractItemView.NoEditTriggers) # 设置选中方式 self.view.setSelectionBehavior(QAbstractItemView.SelectRows) # 获取点击处于哪一行 self.view.clicked.connect(self.test)
def InitUserInterface(self): self.setMinimumWidth(300) self.setMinimumHeight(150) self.table_view = QTableView() self.table_view.setFont(QFont("SimSun", 9)) self.table_view.setShowGrid(False) #self.table_view.setSortingEnabled(True) # 设置表头排序 self.table_view.setEditTriggers( QAbstractItemView.NoEditTriggers) # 禁止编辑 self.table_view.setSelectionBehavior( QAbstractItemView.SelectRows) # 选中整行 self.table_view.setSelectionMode( QAbstractItemView.ExtendedSelection) # 选择方式 #self.table_view.setAlternatingRowColors(True) # 隔行变色 self.table_view.setContextMenuPolicy(Qt.CustomContextMenu) # 右键菜单 self.table_view.customContextMenuRequested.connect( self.OnContextMenu) # 菜单触发 self.vertical_header = self.table_view.verticalHeader() # 垂直表头 self.vertical_header.setVisible(False) self.vertical_header.setDefaultSectionSize(17) self.vertical_header.setSectionResizeMode(QHeaderView.Fixed) # 固定行高 self.horizontal_header = self.table_view.horizontalHeader() # 水平表头 self.horizontal_header.setDefaultAlignment(Qt.AlignCenter) # 显示居中 self.info_list_model = QStandardItemModel() self.info_list_model.setColumnCount(len(self.head_name_list)) for i in range(len(self.head_name_list)): self.info_list_model.setHeaderData(i, Qt.Horizontal, self.head_name_list[i]) self.table_view.setModel(self.info_list_model) self.v_box = QVBoxLayout() self.v_box.setContentsMargins(5, 5, 5, 5) self.v_box.addWidget(self.table_view) self.setLayout(self.v_box)
def _unittest_task_statistics_table_model(): import time from PyQt5.QtWidgets import QApplication, QMainWindow app = QApplication([]) win = QMainWindow() win.resize(800, 600) model = _TableModel(win) view = QTableView(win) view.setModel(model) view.setSortingEnabled(True) hh = QHeaderView(Qt.Horizontal, view) hh.setModel(model) hh.setVisible(True) view.setHorizontalHeader(hh) win.setCentralWidget(view) win.show() def go_go_go(): for _ in range(1000): time.sleep(0.001) app.processEvents() go_go_go() model.set_data(_make_test_data()) for _ in range(5): go_go_go() win.close()
def _setupUi(self): self.setWindowTitle(tr("Ignore List")) self.resize(540, 330) self.verticalLayout = QVBoxLayout(self) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.tableView = QTableView() self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection) self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableView.setShowGrid(False) self.tableView.horizontalHeader().setStretchLastSection(True) self.tableView.verticalHeader().setDefaultSectionSize(18) self.tableView.verticalHeader().setHighlightSections(False) self.tableView.verticalHeader().setVisible(False) self.tableView.setWordWrap(False) self.verticalLayout.addWidget(self.tableView) self.removeSelectedButton = QPushButton(tr("Remove Selected")) self.clearButton = QPushButton(tr("Clear")) self.closeButton = QPushButton(tr("Close")) self.verticalLayout.addLayout( horizontalWrap([ self.removeSelectedButton, self.clearButton, None, self.closeButton ]))
def __init__(self, parent=None): super(Contacts, self).__init__(parent) self.setWindowTitle("QTableView Example") self.resize(550, 250) # Set up the model self.model = QSqlTableModel(self) self.model.setTable("contacts") # EditStrategy can be set to OnFieldChange, OnRowChange or OnManualSubmit # OnFieldChange will modify the record immediately upon ENTER or selecting another field # OnRowChange will modify the record upon selecting a field in a different row # OnManualSubmit will cache all changes until either submitAll() or revertAll() is called self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.setHeaderData(0, Qt.Horizontal, "ID") self.model.setHeaderData(1, Qt.Horizontal, "Name") self.model.setHeaderData(2, Qt.Horizontal, "Job") self.model.setHeaderData(3, Qt.Horizontal, "Email") self.model.select() # Set up the view self.view = QTableView() self.view.setModel(self.model) self.view.resizeColumnsToContents() self.setCentralWidget(self.view)
def __init__(self, db): """ Initialization of GUI. Creates all the necessary elements and the model with info to be displayed. :param db: server database """ super().__init__() self.database = db self.setWindowTitle('История клиентов') self.setFixedSize(600, 700) self.setAttribute(Qt.WA_DeleteOnClose) self.close_button = QPushButton('Закрыть', self) self.close_button.move(250, 650) self.close_button.clicked.connect(self.close) self.user_history_table = QTableView(self) self.user_history_table.move(10, 10) self.user_history_table.setFixedSize(580, 620) self.create_message_history_model()
def __init__(self): super(DataTail, self).__init__() self.dataTable = QTableView() # self.dataTable.setModel(PandasModel(data)) layout = QHBoxLayout() layout.addWidget(self.dataTable) layout_tail = QFormLayout() self.data_x1 = DataCol() self.data_x2 = DataCol() self.data_x3 = DataCol() self.data_x4 = DataCol() self.data_y = DataCol() layout_tail.addRow(QLabel("X1:"), self.data_x1) layout_tail.addRow(QLabel("X2:"), self.data_x2) layout_tail.addRow(QLabel("X3:"), self.data_x3) layout_tail.addRow(QLabel("X4:"), self.data_x4) layout_tail.addRow(QLabel("Y:"), self.data_y) btn_add = QPushButton("添加到任务") btn_add.clicked.connect(self.btn_click) layout_tail.addRow(btn_add) layout.addLayout(layout_tail) layout.setStretch(0, 5) layout.setStretch(1, 1) self.setLayout(layout)
def create_table(self): # create the view tv = QTableView() # set the table model tablemodel = PandasTable(self.load_daily_csv()) tv.setModel(tablemodel) tv.setBaseSize(995, 800) # hide grid tv.setShowGrid(False) vh = tv.verticalHeader() vh.setVisible(True) # set horizontal header properties hh = tv.horizontalHeader() hh.setStretchLastSection(True) # set row height tv.resizeRowsToContents() # enable sorting tv.setSortingEnabled(False) return tv
def __init__(self, parent=None): super().__init__(parent) self.termListTblWdg = QTableView() self.termTableModel = OntoTermsListModel(parent=self) self.termListTblWdg.setSelectionBehavior(QAbstractItemView.SelectRows) self.termListTblWdg.setSelectionMode(QAbstractItemView.SingleSelection) self.termListTblWdg.setModel(self.termTableModel) self.termListTblWdg.setColumnWidth(0, 300) self.termListTblWdg.setColumnWidth(1, 200) # Signals self.termSelectionModel = self.termListTblWdg.selectionModel() self.termSelectionModel.selectionChanged.connect(self.termSelected) #self.termTableModel.layoutChanged.connect(self.termTableLayoutChanged) self.autoCompleteTxt = OntoAutoComplete(self) self.autoCompleteTxt.completionTerminated.connect( self.completionUpdate) grid = QGridLayout(self) grid.addWidget(self.termListTblWdg, 0, 0) grid.addWidget(self.autoCompleteTxt, 1, 0)
def __init__(self, parent=None): super(Viewer, self).__init__(parent) self.MaxRecentFiles = 5 self.windowList = [] self.recentFiles = [] self.settings = QSettings('Axel Schneider', 'QTableViewPandas') self.filename = "" self.setGeometry(0, 0, 800, 600) self.lb = QTableView() self.lb.verticalHeader().setVisible(True) self.lb.setGridStyle(1) self.model = PandasModel() self.lb.setModel(self.model) self.lb.setEditTriggers(QAbstractItemView.DoubleClicked) self.lb.setSelectionBehavior(self.lb.SelectRows) self.lb.setSelectionMode(self.lb.SingleSelection) self.setStyleSheet(stylesheet(self)) self.lb.setAcceptDrops(True) self.setCentralWidget(self.lb) self.setContentsMargins(10, 10, 10, 10) self.createToolBar() self.readSettings() self.lb.setFocus() self.statusBar().showMessage("Ready", 0)
def init_crawl_widget(self): self.llayout = QVBoxLayout() self.crawl_widget.setLayout(self.llayout) self.log_label = QLabel("Log") self.log_list = QTableView() self.log_model = QStandardItemModel() self.log_model.setColumnCount(3) self.log_model.setHorizontalHeaderLabels(["Status", "Time", "Message"]) self.log_list.setModel(self.log_model) self.log_list.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.log_list.horizontalHeader().setSectionResizeMode( 0, QHeaderView.ResizeToContents) self.log_list.horizontalHeader().setSectionResizeMode( 1, QHeaderView.ResizeToContents) self.log_list.horizontalHeader().setSectionResizeMode( 2, QHeaderView.ResizeToContents) log_widget = QWidget() log_layout = QVBoxLayout() log_layout.addWidget(self.log_label) log_layout.addWidget(self.log_list) log_widget.setLayout(log_layout) self.rule_label = QLabel("Rule") self.rule_edit = QTextEdit() rule_widget = QWidget() rule_layout = QVBoxLayout() rule_layout.addWidget(self.rule_label) rule_layout.addWidget(self.rule_edit) rule_widget.setLayout(rule_layout) self.crawl_button = QPushButton('Crawl') self.llayout.addWidget(log_widget) self.llayout.addWidget(rule_widget) self.llayout.addWidget(self.crawl_button) self.llayout.setStretch(0, 15) self.llayout.setStretch(1, 6) self.llayout.setStretch(2, 1)
def initUI(self): viewLabel = QLabel() viewLabel.setText("Team Configuration") viewLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.leadRbtn = QRadioButton() self.leadRbtn.setText("Lead") self.leadIpLbl = QLabel() self.leadIpLbl.setText("Lead IP Address") self.leadIp = QLineEdit() self.ipContainer = QHBoxLayout() self.ipContainer.addWidget(self.leadIpLbl) self.ipContainer.addWidget(self.leadIp) self.connectionsLbl = QLabel() self.connectionsLbl.setText("Connections") self.connectionsView = QTableView() self.connectBtn = QPushButton() self.connectBtn.setText("Connect") self.connectBtn.clicked.connect(self.connect) if self.hide == True: self.connectBtn.hide() teamViewContainer = QVBoxLayout() teamViewContainer.addWidget(viewLabel) teamViewContainer.addWidget(self.leadRbtn) teamViewContainer.addLayout(self.ipContainer) teamViewContainer.addWidget(self.connectionsLbl) teamViewContainer.addWidget(self.connectionsView) teamViewContainer.addWidget(self.connectBtn) self.setLayout(teamViewContainer)
def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(100, 50, 1800, 900) self.setWindowTitle('Artikelen opvragen') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) table_view.setItemDelegateForColumn(3, showImage(self)) table_view.setColumnWidth(3, 100) table_view.verticalHeader().setDefaultSectionSize(75) table_view.clicked.connect(showArtikel) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout)
def __init__(self, model: VehiclesModel, parent=None): super(Coordinates, self).__init__(parent) self.setFixedSize(APP_WIDTH, APP_HEIGHT) self.setWindowTitle('Vehicles\' coordinates') vbox = QVBoxLayout() self.setLayout(vbox) view = QTableView() view.setModel(model) view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) view.setSelectionMode(QTableView.NoSelection) vbox.addWidget(view) for i in range(0, model.columnCount()): view.setColumnHidden(i, True) view.setColumnHidden(VehiclesModel.attr.index(Headers.NAME), False) view.setColumnHidden(VehiclesModel.attr.index(Headers.X_MIN), False) view.setColumnHidden(VehiclesModel.attr.index(Headers.Y_MIN), False) view.setColumnHidden(VehiclesModel.attr.index(Headers.Z_MIN), False) view.setColumnHidden(VehiclesModel.attr.index(Headers.X_MAX), False) view.setColumnHidden(VehiclesModel.attr.index(Headers.Y_MAX), False) view.setColumnHidden(VehiclesModel.attr.index(Headers.Z_MAX), False)
def showDeletePolymer(self): try: # del_polymer = self.ui3.lineEdit_4.text() # del_polymer_list = del_polymer.split(',') # del_polymer_list.sort(key=natural_keys) # table_adel = deletePolymer(self.fasA,del_polymer_list) model_adel = pandasModel(self.table_adel2) self.view_adel = QTableView() self.view_adel.horizontalHeader().setSectionResizeMode( QtWidgets.QHeaderView.Stretch) self.view_adel.setSizeAdjustPolicy( QtWidgets.QAbstractScrollArea.AdjustToContents) self.view_adel.resizeColumnsToContents() self.view_adel.resizeRowsToContents() self.view_adel.setModel(model_adel) self.view_adel.setWindowTitle('Frac v size after deletion') self.view_adel.resize(1000, 600) self.view_adel.show() except: error_dialog = QtWidgets.QErrorMessage() error_dialog.showMessage( 'Cannot show table. Please check deletion polymers') error_dialog.exec_()
# """Sort table by given column number.""" # try: # self.layoutAboutToBeChanged.emit() # self._df = self._df.sort_values(self._df.columns[column_index], ascending=not order) # self.layoutChanged.emit() # except Exception as e: # print(e) if __name__ == '__main__': app = QApplication(sys.argv) NUM_ROWS = 50 NUM_COLUMNS = 10 df = pd.DataFrame( np.random.randint(0, 100, size=[NUM_ROWS, NUM_COLUMNS]), index=["row{}".format(index) for index in range(NUM_ROWS)], columns=["col{}".format(index) for index in range(NUM_COLUMNS)]) table_view = QTableView() my_model = PandasModel(df=df) table_view.setModel(my_model) table_view.show() # The mainloop of the application. The event handling starts from this point. # The exec_() method has an underscore. It is because the exec is a Python keyword. And thus, exec_() was used instead. exit_code = app.exec_() # The sys.exit() method ensures a clean exit. # The environment will be informed, how the application ended. sys.exit(exit_code)
def __init__(self, parser, resources_path): #super().__init__() super(ExchangeQueuesBindingsMenu, self).__init__() __IMAGES_PATH__ = resources_path + '/images' self.setWindowTitle("RabbitMQ Utility - Add Exchange/Queues/Bindings" ) # Set the window title #self.setWindowIcon(QtGui.QIcon(__IMAGES_PATH__ + '/rabbit_icon.jpg')) self.setWindowFlags(QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowCloseButtonHint) #------------------------------ #self.app = app self.sessionAvailable = False self.session = None self.eqbConnection = None self.elist = None self.qlist = None self.exchangeadd = False self.queueadd = False self.bindadd = False self.parser = parser #------------------------------ self.qapp = QApplication([]) #V = self.qapp.desktop().screenGeometry() #h = V.height() - 600 #w = V.width() - 600 h = 800 w = 800 self.resize(w, h) #self.login = LoginDialog(self.parser) self.login = ConnectMenu(self.parser, resources_path) self.login._cancelled.connect(self.loginCancelled) self.login._webUrl.connect(self.getWebConnectionUrl) self.login._commandUrl.connect(self.getCommandConnectionUrl) self.login._userId.connect(self.getConnectionUser) self.login._password.connect(self.getConnectionPassword) self.login._vhost.connect(self.getConnectionVhost) self.login._certName.connect(self.getConnectionCertName) self.login._certPass.connect(self.getConnectionCertPass) self.loginmw = windows.ModernWindow(self.login, self.parser) self.widget = QWidget() self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.fromParent = False self.frame = None #----------------------------------------- MENU BAR ------------------------------------------------- # Create Connect self.connectAction = QAction(QIcon(__IMAGES_PATH__ + '/connect.png'), '&Connect', self) self.connectAction.setShortcut('ALT+C') self.connectAction.setStatusTip('Connect') self.connectAction.triggered.connect(self.show_login) self.connectAction.setEnabled(False) # Create Disconnect self.disconnectAction = QAction( QIcon(__IMAGES_PATH__ + '/disconnect.png'), '&DisConnect', self) self.disconnectAction.setShortcut('ALT+D') self.disconnectAction.setStatusTip('Disconnect') self.disconnectAction.triggered.connect(self.disconnect) # Create Refresh self.refreshAction = QAction(QIcon(__IMAGES_PATH__ + '/refresh.png'), '&Refresh', self) self.refreshAction.setShortcut('ALT+D') self.refreshAction.setStatusTip('Refresh') self.refreshAction.triggered.connect(self.refresh) # Create Exit action self.exitAction = QAction(QIcon(__IMAGES_PATH__ + '/terminate.png'), '&Exit', self) self.exitAction.setShortcut('Ctrl+Q') self.exitAction.setStatusTip('Exit application') self.exitAction.triggered.connect(self.closewin) menuBar = self.menuBar() fileMenu = menuBar.addMenu('&File') fileMenu.addAction(self.connectAction) fileMenu.addAction(self.disconnectAction) fileMenu.addAction(self.refreshAction) fileMenu.addAction(self.exitAction) self.toolbar = self.addToolBar('') self.toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.toolbar.setFloatable(False) self.toolbar.setMovable(False) #self.toolbar.setIconSize(QSize(50,50)) #self.toolbar.setGeometry(100, 100, 400, 400) #------------ Connect ------------- self.loginButton = QAction(QIcon(__IMAGES_PATH__ + '/connect.png'), '&Connect', self) self.loginButton.setIconText('Connect') self.loginButton.triggered.connect(self.show_login) self.loginButton.setEnabled(False) self.loginButton.setStatusTip("Click here to login into server") self.toolbar.addAction(self.loginButton) #------------ Refresh ------------- self.refreshButton = QAction(QIcon(__IMAGES_PATH__ + '/refresh.png'), '&Refresh', self) self.refreshButton.triggered.connect(self.refresh) self.refreshButton.setStatusTip("Click here to refresh data") self.toolbar.addAction(self.refreshButton) self.toolbar.addSeparator() #------------ Disconnect ------------- self.disconnectButton = QAction( QIcon(__IMAGES_PATH__ + '/disconnect.png'), '&Disconnect', self) self.disconnectButton.triggered.connect(self.disconnect) self.disconnectButton.setStatusTip( "Click here to disconnect from server") self.toolbar.addAction(self.disconnectButton) #------------ Exit ------------- self.exitButton = QAction(QIcon(__IMAGES_PATH__ + '/terminate.png'), '&Exit', self) self.exitButton.triggered.connect(self.closewin) self.exitButton.setStatusTip( "Click here to close and exit this application") self.toolbar.addAction(self.exitButton) vBoxEQB = QVBoxLayout() #---------------- Top ---------------------------------- hboxEQB1 = QHBoxLayout() vboxEx = QVBoxLayout() vboxQ = QVBoxLayout() self.xgroupBox = QGroupBox("Add a new exchange") layoutEx = QFormLayout() self.evhostLabel = QLabel("Virtual Host:") self.evhost = QComboBox() self.exNameLabel = QLabel("Name:") self.exName = QLineEdit() self.exName.textChanged[str].connect( lambda: self.addExchangeButton.setEnabled(self.exName.text() != "" )) self.exName.textChanged[str].connect( lambda: self.delExchangeButton.setEnabled(self.exName.text() != "" )) self.exTypeLabel = QLabel("Type:") self.exType = QComboBox() self.durabilityLabel = QLabel("Durability") self.durability = QComboBox() self.durability.addItem("Durable") self.durability.addItem("Transient") self.autoDeleteLabel = QLabel("Auto Delete?:") self.autoDelete = QComboBox() self.autoDelete.addItem("No") self.autoDelete.addItem("Yes") self.internalLabel = QLabel("Internal?:") self.internal = QComboBox() self.internal.addItem("No") self.internal.addItem("Yes") self.addExchangeButton = QPushButton("Add exchange") self.addExchangeButton.setObjectName('addExchange') self.addExchangeButton.clicked.connect(self.buttonClicked) self.addExchangeButton.setEnabled(False) self.delExchangeButton = QPushButton("Delete exchange") self.delExchangeButton.setObjectName('delExchange') self.delExchangeButton.clicked.connect(self.buttonClicked) self.delExchangeButton.setEnabled(False) self.exArgsGroupBox = QGroupBox("Arguments") vboxexargstable = QVBoxLayout() hboxbuttonexargs = QHBoxLayout() self.exArgsAddButton = QPushButton("") self.exArgsDelButton = QPushButton("") self.exArgsAddButton.setIcon(QIcon(__IMAGES_PATH__ + '/addrow.png')) self.exArgsAddButton.setIconSize(QSize(25, 25)) self.exArgsDelButton.setIcon(QIcon(__IMAGES_PATH__ + '/deleterow.png')) self.exArgsDelButton.setIconSize(QSize(25, 25)) self.exArgsAddButton.setObjectName('addExArgsKey') self.exArgsDelButton.setObjectName('delExArgsKey') self.exArgsDelButton.setEnabled(False) self.exArgsAddButton.clicked.connect(self.buttonClicked) self.exArgsDelButton.clicked.connect(self.buttonClicked) hboxbuttonexargs.addWidget(QLabel(" ")) hboxbuttonexargs.addWidget(QLabel(" ")) hboxbuttonexargs.addWidget(QLabel(" ")) hboxbuttonexargs.addWidget(QLabel(" ")) hboxbuttonexargs.addWidget(self.exArgsAddButton) hboxbuttonexargs.addWidget(self.exArgsDelButton) vboxexargstable.addLayout(hboxbuttonexargs) headers = ["Key", "Value"] datainex = [] self.exargstablemodel = TableModel(datainex, headers, self) self.exargstablemodelview = QTableView() self.exargstablemodelview.setSelectionMode( QAbstractItemView.SingleSelection) self.exargstablemodelview.clicked.connect( self.showTableSelectedRowColumn) self.set_table_view_attributes(self.exargstablemodelview, self.exargstablemodel, datainex) vboxexargstable.addWidget(self.exargstablemodelview) self.exArgsGroupBox.setLayout(vboxexargstable) layoutEx.addRow(self.evhostLabel, self.evhost) layoutEx.addRow(self.exNameLabel, self.exName) layoutEx.addRow(self.exTypeLabel, self.exType) layoutEx.addRow(self.durabilityLabel, self.durability) layoutEx.addRow(self.autoDeleteLabel, self.autoDelete) layoutEx.addRow(self.internalLabel, self.internal) layoutEx.addRow(self.exArgsGroupBox) exbuttonlayout = QHBoxLayout() exbuttonlayout.addWidget(self.addExchangeButton) exbuttonlayout.addWidget(self.delExchangeButton) exbuttonlayout.addWidget(QLabel("")) layoutEx.addRow(exbuttonlayout) self.xgroupBox.setLayout(layoutEx) vboxEx.addWidget(self.xgroupBox) hboxEQB1.addLayout(vboxEx, 0) #------------- Queue -------------------------------------------- self.qgroupBox = QGroupBox("Add a new queue") layoutQ = QFormLayout() self.qvhostLabel = QLabel("Virtual Host:") self.qvhost = QComboBox() self.qNameLabel = QLabel("Name:") self.qName = QLineEdit() self.qName.textChanged[str].connect( lambda: self.addQueueButton.setEnabled(self.qName.text() != "")) self.qName.textChanged[str].connect( lambda: self.delQueueButton.setEnabled(self.qName.text() != "")) self.qName.textChanged[str].connect( lambda: self.purgeQueueButton.setEnabled(self.qName.text() != "")) #self.qNodeLabel = QLabel("Node:") #self.qNode = QComboBox() self.qDurabilityLabel = QLabel("Durability") self.qDurability = QComboBox() self.qDurability.addItem("Durable") self.qDurability.addItem("Transient") self.qAutoDeleteLabel = QLabel("Auto Delete?:") self.qAutoDelete = QComboBox() self.qAutoDelete.addItem("No") self.qAutoDelete.addItem("Yes") self.addQueueButton = QPushButton("Add queue") self.addQueueButton.setObjectName('addQueue') self.addQueueButton.clicked.connect(self.buttonClicked) self.addQueueButton.setEnabled(False) self.delQueueButton = QPushButton("Delete queue") self.delQueueButton.setObjectName('delQueue') self.delQueueButton.clicked.connect(self.buttonClicked) self.delQueueButton.setEnabled(False) self.purgeQueueButton = QPushButton("Purge queue") self.purgeQueueButton.setObjectName('purgeQueue') self.purgeQueueButton.clicked.connect(self.buttonClicked) self.purgeQueueButton.setEnabled(False) self.qArgsGroupBox = QGroupBox("Arguments") vboxqargstable = QVBoxLayout() hboxbuttonqargs = QHBoxLayout() self.qArgsAddButton = QPushButton("") self.qArgsDelButton = QPushButton("") self.qArgsAddButton.setIcon(QIcon(__IMAGES_PATH__ + '/addrow.png')) self.qArgsAddButton.setIconSize(QSize(25, 25)) self.qArgsDelButton.setIcon(QIcon(__IMAGES_PATH__ + '/deleterow.png')) self.qArgsDelButton.setIconSize(QSize(25, 25)) self.qArgsAddButton.setObjectName('addQArgsKey') self.qArgsDelButton.setObjectName('delQArgsKey') self.qArgsDelButton.setEnabled(False) self.qArgsAddButton.clicked.connect(self.buttonClicked) self.qArgsDelButton.clicked.connect(self.buttonClicked) hboxbuttonqargs.addWidget(QLabel(" ")) hboxbuttonqargs.addWidget(QLabel(" ")) hboxbuttonqargs.addWidget(QLabel(" ")) hboxbuttonqargs.addWidget(QLabel(" ")) hboxbuttonqargs.addWidget(self.qArgsAddButton) hboxbuttonqargs.addWidget(self.qArgsDelButton) vboxqargstable.addLayout(hboxbuttonqargs) headers = ["Key", "Value"] datainq = [] self.qargstablemodel = TableModel(datainq, headers, self) self.qargstablemodelview = QTableView() self.qargstablemodelview.setSelectionMode( QAbstractItemView.SingleSelection) self.qargstablemodelview.clicked.connect( self.showTableSelectedRowColumn) self.set_table_view_attributes(self.qargstablemodelview, self.qargstablemodel, datainq) vboxqargstable.addWidget(self.qargstablemodelview) self.qArgsGroupBox.setLayout(vboxqargstable) layoutQ.addRow(self.qvhostLabel, self.qvhost) layoutQ.addRow(self.qNameLabel, self.qName) layoutQ.addRow(self.qDurabilityLabel, self.qDurability) #layoutQ.addRow(self.qNodeLabel, self.qNode) layoutQ.addRow(self.qAutoDeleteLabel, self.qAutoDelete) layoutQ.addRow(QLabel(""), QLabel("")) layoutQ.addRow(QLabel(""), QLabel("")) layoutQ.addRow(self.qArgsGroupBox) qbuttonlayout = QHBoxLayout() qbuttonlayout.addWidget(self.addQueueButton) qbuttonlayout.addWidget(self.delQueueButton) qbuttonlayout.addWidget(self.purgeQueueButton) layoutQ.addRow(qbuttonlayout) self.qgroupBox.setLayout(layoutQ) vboxQ.addWidget(self.qgroupBox) hboxEQB1.addLayout(vboxQ, 0) #------------------- Bottom ---------------------- hboxEQB2 = QHBoxLayout() layoutBinding = QFormLayout() self.bindinggroupBox = QGroupBox("Add a new binding") self.exchange2queue = QRadioButton("Exchange to Queue") self.exchange2exchange = QRadioButton("Exchange to Exchange") self.exchange2queue.setChecked(True) self.exchange2queue.toggled.connect( lambda: self.btnstate(self.exchange2queue)) self.exchange2exchange.toggled.connect( lambda: self.btnstate(self.exchange2exchange)) self.sourceLabel = QLabel("Source:") self.source = QComboBox() self.targetLabel = QLabel("Target:") self.target = QComboBox() self.target.currentIndexChanged['QString'].connect( lambda: self.addBindButton.setEnabled(self.target.currentText() != self.source.currentText())) self.target.currentIndexChanged['QString'].connect( lambda: self.addUnbindButton.setEnabled(self.target.currentText( ) != self.source.currentText())) self.rkeyLabel = QLabel("Routing Key:") self.rkey = QLineEdit() self.addBindButton = QPushButton("Bind") self.addBindButton.setObjectName('addBind') self.addBindButton.setEnabled(False) self.addBindButton.clicked.connect(self.buttonClicked) self.addUnbindButton = QPushButton("UnBind") self.addUnbindButton.setObjectName('unBind') self.addUnbindButton.setEnabled(False) self.addUnbindButton.clicked.connect(self.buttonClicked) self.bindingArgsGroupBox = QGroupBox("Arguments") vboxbindingargstable = QVBoxLayout() hboxbuttonbindingargs = QHBoxLayout() self.bindingArgsAddButton = QPushButton("") self.bindingArgsDelButton = QPushButton("") self.bindingArgsAddButton.setIcon( QIcon(__IMAGES_PATH__ + '/addrow.png')) self.bindingArgsAddButton.setIconSize(QSize(25, 25)) self.bindingArgsDelButton.setIcon( QIcon(__IMAGES_PATH__ + '/deleterow.png')) self.bindingArgsDelButton.setIconSize(QSize(25, 25)) self.bindingArgsAddButton.setObjectName('addBindArgsKey') self.bindingArgsDelButton.setObjectName('delBindArgsKey') self.bindingArgsDelButton.setEnabled(False) self.bindingArgsAddButton.clicked.connect(self.buttonClicked) self.bindingArgsDelButton.clicked.connect(self.buttonClicked) hboxbuttonbindingargs.addWidget(QLabel(" ")) hboxbuttonbindingargs.addWidget(QLabel(" ")) hboxbuttonbindingargs.addWidget(QLabel(" ")) hboxbuttonbindingargs.addWidget(QLabel(" ")) hboxbuttonbindingargs.addWidget(self.bindingArgsAddButton) hboxbuttonbindingargs.addWidget(self.bindingArgsDelButton) headers = ["Key", "Value"] datainbinding = [] self.bindingargstablemodel = TableModel(datainbinding, headers, self) self.bindingargstablemodelview = QTableView() self.bindingargstablemodelview.setSelectionMode( QAbstractItemView.SingleSelection) self.bindingargstablemodelview.clicked.connect( self.showTableSelectedRowColumn) self.set_table_view_attributes(self.bindingargstablemodelview, self.bindingargstablemodel, datainbinding) self.bindingArgsGroupBox.setLayout(vboxbindingargstable) vboxbindingargstable.addLayout(hboxbuttonbindingargs) vboxbindingargstable.addWidget(self.bindingargstablemodelview) layoutBinding.addRow(self.exchange2queue, self.exchange2exchange) layoutBinding.addRow(self.sourceLabel, self.source) layoutBinding.addRow(self.targetLabel, self.target) layoutBinding.addRow(self.rkeyLabel, self.rkey) layoutBinding.addRow(self.bindingArgsGroupBox) bindbuttonlayout = QHBoxLayout() bindbuttonlayout.addWidget(self.addBindButton) bindbuttonlayout.addWidget(self.addUnbindButton) layoutBinding.addRow(bindbuttonlayout) self.bindinggroupBox.setLayout(layoutBinding) hboxEQB2.addWidget(self.bindinggroupBox) vBoxEQB.addLayout(hboxEQB1) vBoxEQB.addLayout(hboxEQB2) self.widget.setLayout(vBoxEQB) self.setCentralWidget(self.widget)
class pandasModel(QAbstractTableModel): def __init__(self, data): QAbstractTableModel.__init__(self) self._data = data def rowCount(self, parent=None): return self._data.shape[0] def columnCount(self, parnet=None): return self._data.shape[1] def data(self, index, role=Qt.DisplayRole): if index.isValid(): if role == Qt.DisplayRole: return str(self._data.iloc[index.row(), index.column()]) return None def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self._data.columns[col] return None if __name__ == '__main__': app = QApplication(sys.argv) model = pandasModel(df) view = QTableView() view.setModel(model) view.show() sys.exit(app.exec_())
def __init__(self, parent): super().__init__(parent) self.logger = logging.getLogger(__name__) self.config = Configuration() self.filenames = [] self.data = '' # left part of frame header_left = [ _("Relative Path"), _("Name"), _("Size"), _("Date Modified") ] self.file_model = FileTableModel(self, header_left, []) self.file_view = QTableView() self.file_view.setModel(self.file_model) self.file_view.setSortingEnabled(True) self.file_view.setAlternatingRowColors(True) self.file_view.setShowGrid(False) # adjustments self.file_view.verticalHeader().setDefaultSectionSize(22) #self.file_view.horizontalHeader().setDefaultSectionSize(self.file_view.width()/len(header)) #self.file_view.horizontalHeader().setStretchLastSection(True) self.file_view.setSelectionMode(QAbstractItemView.SingleSelection) self.file_view.setSelectionBehavior(QAbstractItemView.SelectRows) self.file_view.doubleClicked.connect(self.file_view_doubleclicked) #self.file_view.clicked.connect(self.file_view_clicked) self.file_view.selectionModel().selectionChanged.connect( self.file_view_selection_changed) #self.file_view.setContextMenuPolicy(Qt.CustomContextMenu) #self.file_view.customContextMenuRequested.connect(self.file_view_context_menu_requested) #self.lb_nsfc = QLabel("") self.lb_path = QLabel("") self.lb_path.setFont(QFont('SansSerif', 10)) self.pb_select = QPushButton(_("Select")) self.pb_select.clicked.connect(self.show_explorer) # right part of frame header_right = [ _("Set Name"), _("Files"), _("New Files"), _("Update Files"), _("Unchanged Files") ] self.overview_model = OverviewTableModel(self, header_right, []) self.overview = QTableView() self.overview.setModel(self.overview_model) self.overview.setAlternatingRowColors(True) self.overview.setShowGrid(False) self.overview.verticalHeader().setDefaultSectionSize(22) self.pb_publish = QPushButton(_("Publish")) self.pb_publish.clicked.connect(self.pb_publish_clicked) self.pb_zip = QPushButton(_("Create Zip")) self.pb_zip.clicked.connect(self.pb_zip_clicked) self.__init_ui__()
def __init__(self): super(MainWindow, self).__init__() self.currentPath = QDir.homePath() self.model = ImageModel(self) centralWidget = QWidget() self.view = QTableView() self.view.setShowGrid(False) self.view.horizontalHeader().hide() self.view.verticalHeader().hide() self.view.horizontalHeader().setMinimumSectionSize(1) self.view.verticalHeader().setMinimumSectionSize(1) self.view.setModel(self.model) delegate = PixelDelegate(self) self.view.setItemDelegate(delegate) pixelSizeLabel = QLabel("Pixel size:") pixelSizeSpinBox = QSpinBox() pixelSizeSpinBox.setMinimum(4) pixelSizeSpinBox.setMaximum(32) pixelSizeSpinBox.setValue(12) fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") self.printAction = fileMenu.addAction("&Print...") self.printAction.setEnabled(False) self.printAction.setShortcut("Ctrl+P") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") helpMenu = QMenu("&Help", self) aboutAction = helpMenu.addAction("&About") self.menuBar().addMenu(fileMenu) self.menuBar().addSeparator() self.menuBar().addMenu(helpMenu) openAction.triggered.connect(self.chooseImage) self.printAction.triggered.connect(self.printImage) quitAction.triggered.connect(QApplication.instance().quit) aboutAction.triggered.connect(self.showAboutBox) pixelSizeSpinBox.valueChanged.connect(delegate.setPixelSize) pixelSizeSpinBox.valueChanged.connect(self.updateView) controlsLayout = QHBoxLayout() controlsLayout.addWidget(pixelSizeLabel) controlsLayout.addWidget(pixelSizeSpinBox) controlsLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.view) mainLayout.addLayout(controlsLayout) centralWidget.setLayout(mainLayout) self.setCentralWidget(centralWidget) self.setWindowTitle("Pixelator") self.resize(640, 480)
def __init__(self): super().__init__() self.setLayout(QVBoxLayout()) self.setWindowTitle(i18n("Export Settings")) buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) mainWidget = QTabWidget() self.layout().addWidget(mainWidget) self.layout().addWidget(buttons) # Set basic crop settings # Set which layers to remove before export. mainExportSettings = QWidget() mainExportSettings.setLayout(QVBoxLayout()) groupExportCrop = QGroupBox(i18n("Crop Settings")) formCrop = QFormLayout() groupExportCrop.setLayout(formCrop) self.chk_toOutmostGuides = QCheckBox(i18n("Crop to outmost guides")) self.chk_toOutmostGuides.setChecked(True) self.chk_toOutmostGuides.setToolTip( i18n( "This will crop to the outmost guides if possible and otherwise use the underlying crop settings." )) formCrop.addRow("", self.chk_toOutmostGuides) btn_fromSelection = QPushButton( i18n("Set Margins from Active Selection")) btn_fromSelection.clicked.connect(self.slot_set_margin_from_selection) # This doesn't work. formCrop.addRow("", btn_fromSelection) self.spn_marginLeft = QSpinBox() self.spn_marginLeft.setMaximum(99999) self.spn_marginLeft.setSuffix(" px") formCrop.addRow(i18n("Left:"), self.spn_marginLeft) self.spn_marginTop = QSpinBox() self.spn_marginTop.setMaximum(99999) self.spn_marginTop.setSuffix(" px") formCrop.addRow(i18n("Top:"), self.spn_marginTop) self.spn_marginRight = QSpinBox() self.spn_marginRight.setMaximum(99999) self.spn_marginRight.setSuffix(" px") formCrop.addRow(i18n("Right:"), self.spn_marginRight) self.spn_marginBottom = QSpinBox() self.spn_marginBottom.setMaximum(99999) self.spn_marginBottom.setSuffix(" px") formCrop.addRow(i18n("Bottom:"), self.spn_marginBottom) groupExportLayers = QGroupBox(i18n("Layers")) formLayers = QFormLayout() groupExportLayers.setLayout(formLayers) self.cmbLabelsRemove = labelSelector() formLayers.addRow(i18n("Label for removal:"), self.cmbLabelsRemove) self.ln_text_layer_name = QLineEdit() self.ln_text_layer_name.setToolTip( i18n( "These are keywords that can be used to identify text layers. A layer only needs to contain the keyword to be recognized. Keywords should be comma separated." )) self.ln_panel_layer_name = QLineEdit() self.ln_panel_layer_name.setToolTip( i18n( "These are keywords that can be used to identify panel layers. A layer only needs to contain the keyword to be recognized. Keywords should be comma separated." )) formLayers.addRow(i18n("Text Layer Key:"), self.ln_text_layer_name) formLayers.addRow(i18n("Panel Layer Key:"), self.ln_panel_layer_name) mainExportSettings.layout().addWidget(groupExportCrop) mainExportSettings.layout().addWidget(groupExportLayers) mainWidget.addTab(mainExportSettings, i18n("General")) # CBZ, crop, resize, which metadata to add. CBZexportSettings = QWidget() CBZexportSettings.setLayout(QVBoxLayout()) self.CBZactive = QCheckBox(i18n("Export to CBZ")) CBZexportSettings.layout().addWidget(self.CBZactive) self.CBZgroupResize = comic_export_resize_widget("CBZ") CBZexportSettings.layout().addWidget(self.CBZgroupResize) self.CBZactive.clicked.connect(self.CBZgroupResize.setEnabled) CBZgroupMeta = QGroupBox(i18n("Metadata to Add")) # CBZexportSettings.layout().addWidget(CBZgroupMeta) CBZgroupMeta.setLayout(QFormLayout()) mainWidget.addTab(CBZexportSettings, i18n("CBZ")) # ACBF, crop, resize, creator name, version history, panel layer, text layers. ACBFExportSettings = QWidget() ACBFform = QFormLayout() ACBFExportSettings.setLayout(QVBoxLayout()) ACBFdocInfo = QGroupBox() ACBFdocInfo.setTitle(i18n("ACBF Document Info")) ACBFdocInfo.setLayout(ACBFform) self.lnACBFID = QLabel() self.lnACBFID.setToolTip( i18n( "By default this will be filled with a generated universal unique identifier. The ID by itself is merely so that comic book library management programs can figure out if this particular comic is already in their database and whether it has been rated. Of course, the UUID can be changed into something else by manually changing the JSON, but this is advanced usage." )) self.spnACBFVersion = QSpinBox() self.ACBFhistoryModel = QStandardItemModel() acbfHistoryList = QListView() acbfHistoryList.setModel(self.ACBFhistoryModel) btn_add_history = QPushButton(i18n("Add History Entry")) btn_add_history.clicked.connect(self.slot_add_history_item) self.chkIncludeTranslatorComments = QCheckBox() self.chkIncludeTranslatorComments.setText( i18n("Include translator's comments")) self.chkIncludeTranslatorComments.setToolTip( i18n( "A PO file can contain translator's comments. If this is checked, the translations comments will be added as references into the ACBF file." )) self.lnTranslatorHeader = QLineEdit() ACBFform.addRow(i18n("ACBF UID:"), self.lnACBFID) ACBFform.addRow(i18n("Version:"), self.spnACBFVersion) ACBFform.addRow(i18n("Version history:"), acbfHistoryList) ACBFform.addRow("", btn_add_history) ACBFform.addRow("", self.chkIncludeTranslatorComments) ACBFform.addRow(i18n("Translator header:"), self.lnTranslatorHeader) ACBFAuthorInfo = QWidget() acbfAVbox = QVBoxLayout(ACBFAuthorInfo) infoLabel = QLabel( i18n( "The people responsible for the generation of the CBZ/ACBF files." )) infoLabel.setWordWrap(True) ACBFAuthorInfo.layout().addWidget(infoLabel) self.ACBFauthorModel = QStandardItemModel(0, 6) labels = [ i18n("Nick Name"), i18n("Given Name"), i18n("Middle Name"), i18n("Family Name"), i18n("Email"), i18n("Homepage") ] self.ACBFauthorModel.setHorizontalHeaderLabels(labels) self.ACBFauthorTable = QTableView() acbfAVbox.addWidget(self.ACBFauthorTable) self.ACBFauthorTable.setModel(self.ACBFauthorModel) self.ACBFauthorTable.verticalHeader().setDragEnabled(True) self.ACBFauthorTable.verticalHeader().setDropIndicatorShown(True) self.ACBFauthorTable.verticalHeader().setSectionsMovable(True) self.ACBFauthorTable.verticalHeader().sectionMoved.connect( self.slot_reset_author_row_visual) AuthorButtons = QHBoxLayout() btn_add_author = QPushButton(i18n("Add Author")) btn_add_author.clicked.connect(self.slot_add_author) AuthorButtons.addWidget(btn_add_author) btn_remove_author = QPushButton(i18n("Remove Author")) btn_remove_author.clicked.connect(self.slot_remove_author) AuthorButtons.addWidget(btn_remove_author) acbfAVbox.addLayout(AuthorButtons) ACBFStyle = QWidget() ACBFStyle.setLayout(QHBoxLayout()) self.ACBFStylesModel = QStandardItemModel() self.ACBFStyleClass = QListView() self.ACBFStyleClass.setModel(self.ACBFStylesModel) ACBFStyle.layout().addWidget(self.ACBFStyleClass) ACBFStyleEdit = QWidget() ACBFStyleEditVB = QVBoxLayout(ACBFStyleEdit) self.ACBFuseFont = QCheckBox(i18n("Use font")) self.ACBFFontList = QListView() self.ACBFFontList.setItemDelegate(font_list_delegate()) self.ACBFuseFont.toggled.connect(self.font_slot_enable_font_view) self.ACBFFontListModel = QStandardItemModel() self.ACBFFontListModel.rowsRemoved.connect( self.slot_font_current_style) self.ACBFFontListModel.itemChanged.connect( self.slot_font_current_style) self.btnAcbfAddFont = QPushButton() self.btnAcbfAddFont.setIcon(Application.icon("list-add")) self.btnAcbfAddFont.clicked.connect(self.font_slot_add_font) self.btn_acbf_remove_font = QPushButton() self.btn_acbf_remove_font.setIcon(Application.icon("edit-delete")) self.btn_acbf_remove_font.clicked.connect(self.font_slot_remove_font) self.ACBFFontList.setModel(self.ACBFFontListModel) self.ACBFdefaultFont = QComboBox() self.ACBFdefaultFont.addItems( ["sans-serif", "serif", "monospace", "cursive", "fantasy"]) acbfFontButtons = QHBoxLayout() acbfFontButtons.addWidget(self.btnAcbfAddFont) acbfFontButtons.addWidget(self.btn_acbf_remove_font) self.ACBFBold = QCheckBox(i18n("Bold")) self.ACBFItal = QCheckBox(i18n("Italic")) self.ACBFStyleClass.clicked.connect(self.slot_set_style) self.ACBFStyleClass.selectionModel().selectionChanged.connect( self.slot_set_style) self.ACBFStylesModel.itemChanged.connect(self.slot_set_style) self.ACBFBold.toggled.connect(self.slot_font_current_style) self.ACBFItal.toggled.connect(self.slot_font_current_style) colorWidget = QGroupBox(self) colorWidget.setTitle(i18n("Text Colors")) colorWidget.setLayout(QVBoxLayout()) self.regularColor = QColorDialog() self.invertedColor = QColorDialog() self.btn_acbfRegColor = QPushButton(i18n("Regular Text"), self) self.btn_acbfRegColor.clicked.connect(self.slot_change_regular_color) self.btn_acbfInvColor = QPushButton(i18n("Inverted Text"), self) self.btn_acbfInvColor.clicked.connect(self.slot_change_inverted_color) colorWidget.layout().addWidget(self.btn_acbfRegColor) colorWidget.layout().addWidget(self.btn_acbfInvColor) ACBFStyleEditVB.addWidget(colorWidget) ACBFStyleEditVB.addWidget(self.ACBFuseFont) ACBFStyleEditVB.addWidget(self.ACBFFontList) ACBFStyleEditVB.addLayout(acbfFontButtons) ACBFStyleEditVB.addWidget(self.ACBFdefaultFont) ACBFStyleEditVB.addWidget(self.ACBFBold) ACBFStyleEditVB.addWidget(self.ACBFItal) ACBFStyleEditVB.addStretch() ACBFStyle.layout().addWidget(ACBFStyleEdit) ACBFTabwidget = QTabWidget() ACBFTabwidget.addTab(ACBFdocInfo, i18n("Document Info")) ACBFTabwidget.addTab(ACBFAuthorInfo, i18n("Author Info")) ACBFTabwidget.addTab(ACBFStyle, i18n("Style Sheet")) ACBFExportSettings.layout().addWidget(ACBFTabwidget) mainWidget.addTab(ACBFExportSettings, i18n("ACBF")) # Epub export, crop, resize, other questions. EPUBexportSettings = QWidget() EPUBexportSettings.setLayout(QVBoxLayout()) self.EPUBactive = QCheckBox(i18n("Export to EPUB")) EPUBexportSettings.layout().addWidget(self.EPUBactive) self.EPUBgroupResize = comic_export_resize_widget("EPUB") EPUBexportSettings.layout().addWidget(self.EPUBgroupResize) self.EPUBactive.clicked.connect(self.EPUBgroupResize.setEnabled) mainWidget.addTab(EPUBexportSettings, i18n("EPUB")) # For Print. Crop, no resize. TIFFExportSettings = QWidget() TIFFExportSettings.setLayout(QVBoxLayout()) self.TIFFactive = QCheckBox(i18n("Export to TIFF")) TIFFExportSettings.layout().addWidget(self.TIFFactive) self.TIFFgroupResize = comic_export_resize_widget("TIFF") TIFFExportSettings.layout().addWidget(self.TIFFgroupResize) self.TIFFactive.clicked.connect(self.TIFFgroupResize.setEnabled) mainWidget.addTab(TIFFExportSettings, i18n("TIFF"))
def setupRightPanel(self): self.ServicesTabWidget = QTabWidget() self.ServicesTabWidget.setEnabled(True) self.sizePolicy2.setHeightForWidth( self.ServicesTabWidget.sizePolicy().hasHeightForWidth()) self.ServicesTabWidget.setSizePolicy(self.sizePolicy2) self.ServicesTabWidget.setObjectName(_fromUtf8("ServicesTabWidget")) self.splitter.addWidget(self.ServicesTabWidget) ### self.splitter_3 = QSplitter() self.splitter_3.setOrientation(Qt.Horizontal) self.splitter_3.setObjectName(_fromUtf8("splitter_3")) self.splitter_3.setSizePolicy( self.sizePolicy2 ) # this makes the tools tab stay the same width when resizing the window ### self.ToolHostsWidget = QWidget() self.ToolHostsWidget.setObjectName(_fromUtf8("ToolHostsTab")) self.ToolHostsLayout = QVBoxLayout(self.ToolHostsWidget) self.ToolHostsLayout.setObjectName(_fromUtf8("verticalLayout")) self.ToolHostsTableView = QTableView(self.ToolHostsWidget) self.ToolHostsTableView.setObjectName(_fromUtf8("ServicesTableView")) self.ToolHostsLayout.addWidget(self.ToolHostsTableView) self.splitter_3.addWidget(self.ToolHostsWidget) self.DisplayWidget = QWidget() self.DisplayWidget.setObjectName('ToolOutput') self.DisplayWidget.setSizePolicy(self.sizePolicy2) #self.toolOutputTextView = QTextEdit(self.DisplayWidget) self.toolOutputTextView = QPlainTextEdit(self.DisplayWidget) self.toolOutputTextView.setReadOnly(True) self.DisplayWidgetLayout = QHBoxLayout(self.DisplayWidget) self.DisplayWidgetLayout.addWidget(self.toolOutputTextView) self.splitter_3.addWidget(self.DisplayWidget) self.ScreenshotWidget = ImageViewer() self.ScreenshotWidget.setObjectName('Screenshot') self.ScreenshotWidget.scrollArea.setSizePolicy(self.sizePolicy2) self.ScreenshotWidget.scrollArea.setContextMenuPolicy( Qt.CustomContextMenu) self.splitter_3.addWidget(self.ScreenshotWidget.scrollArea) self.splitter.addWidget(self.splitter_3) ### self.ServicesRightTab = QWidget() self.ServicesRightTab.setObjectName(_fromUtf8("ServicesRightTab")) self.verticalLayout = QVBoxLayout(self.ServicesRightTab) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.ServicesTableView = QTableView(self.ServicesRightTab) self.ServicesTableView.setObjectName(_fromUtf8("ServicesTableView")) self.verticalLayout.addWidget(self.ServicesTableView) self.ServicesTabWidget.addTab(self.ServicesRightTab, _fromUtf8("")) self.ScriptsTab = QWidget() self.ScriptsTab.setObjectName(_fromUtf8("ScriptsTab")) self.horizontalLayout_6 = QHBoxLayout(self.ScriptsTab) self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6")) self.splitter_4 = QSplitter(self.ScriptsTab) self.splitter_4.setOrientation(Qt.Horizontal) self.splitter_4.setObjectName(_fromUtf8("splitter_4")) self.ScriptsTableView = QTableView() self.ScriptsTableView.setObjectName(_fromUtf8("ScriptsTableView")) self.splitter_4.addWidget(self.ScriptsTableView) self.ScriptsOutputTextEdit = QPlainTextEdit() self.ScriptsOutputTextEdit.setObjectName( _fromUtf8("ScriptsOutputTextEdit")) self.ScriptsOutputTextEdit.setReadOnly(True) self.splitter_4.addWidget(self.ScriptsOutputTextEdit) self.horizontalLayout_6.addWidget(self.splitter_4) self.ServicesTabWidget.addTab(self.ScriptsTab, _fromUtf8("")) self.InformationTab = QWidget() self.InformationTab.setObjectName(_fromUtf8("InformationTab")) self.ServicesTabWidget.addTab(self.InformationTab, _fromUtf8("")) self.NotesTab = QWidget() self.NotesTab.setObjectName(_fromUtf8("NotesTab")) self.horizontalLayout_4 = QHBoxLayout(self.NotesTab) self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) #self.NotesTextEdit = QTextEdit(self.NotesTab) self.NotesTextEdit = QPlainTextEdit(self.NotesTab) self.NotesTextEdit.setObjectName(_fromUtf8("NotesTextEdit")) self.horizontalLayout_4.addWidget(self.NotesTextEdit) self.ServicesTabWidget.addTab(self.NotesTab, _fromUtf8(""))
def setupLeftPanel(self): self.HostsTabWidget = QTabWidget(self.splitter) self.sizePolicy.setHeightForWidth( self.HostsTabWidget.sizePolicy().hasHeightForWidth()) self.HostsTabWidget.setSizePolicy(self.sizePolicy) self.HostsTabWidget.setObjectName(_fromUtf8("HostsTabWidget")) self.HostsTab = QWidget() self.HostsTab.setObjectName(_fromUtf8("HostsTab")) self.keywordTextInput = QLineEdit() self.FilterApplyButton = QToolButton() self.searchIcon = QIcon() self.searchIcon.addPixmap(QPixmap(_fromUtf8("./images/search.png")), QIcon.Normal, QIcon.Off) self.FilterApplyButton.setIconSize(QSize(29, 21)) self.FilterApplyButton.setIcon(self.searchIcon) self.FilterAdvancedButton = QToolButton() self.advancedIcon = QIcon() self.advancedIcon.addPixmap( QPixmap(_fromUtf8("./images/advanced.png")), QIcon.Normal, QIcon.Off) self.FilterAdvancedButton.setIconSize(QSize(19, 19)) self.FilterAdvancedButton.setIcon(self.advancedIcon) self.vlayout = QVBoxLayout(self.HostsTab) self.vlayout.setObjectName(_fromUtf8("vlayout")) self.HostsTableView = QTableView(self.HostsTab) self.HostsTableView.setObjectName(_fromUtf8("HostsTableView")) self.vlayout.addWidget(self.HostsTableView) self.addHostsOverlay = QTextEdit( self.HostsTab ) # the overlay widget that appears over the hosttableview self.addHostsOverlay.setObjectName(_fromUtf8("addHostsOverlay")) self.addHostsOverlay.setText('Click here to add host(s) to scope') self.addHostsOverlay.setReadOnly(True) self.addHostsOverlay.setContextMenuPolicy(Qt.NoContextMenu) ### self.addHostsOverlay.setFont(QFont('', 12)) self.addHostsOverlay.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) ### self.vlayout.addWidget(self.addHostsOverlay) self.hlayout = QHBoxLayout() self.hlayout.addWidget(self.keywordTextInput) self.hlayout.addWidget(self.FilterApplyButton) self.hlayout.addWidget(self.FilterAdvancedButton) self.vlayout.addLayout(self.hlayout) self.HostsTabWidget.addTab(self.HostsTab, _fromUtf8("")) self.ServicesLeftTab = QWidget() self.ServicesLeftTab.setObjectName(_fromUtf8("ServicesLeftTab")) self.horizontalLayout_2 = QHBoxLayout(self.ServicesLeftTab) self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) self.ServiceNamesTableView = QTableView(self.ServicesLeftTab) self.ServiceNamesTableView.setObjectName( _fromUtf8("ServiceNamesTableView")) self.horizontalLayout_2.addWidget(self.ServiceNamesTableView) self.HostsTabWidget.addTab(self.ServicesLeftTab, _fromUtf8("")) self.ToolsTab = QWidget() self.ToolsTab.setObjectName(_fromUtf8("ToolsTab")) self.horizontalLayout_3 = QHBoxLayout(self.ToolsTab) self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) self.ToolsTableView = QTableView(self.ToolsTab) self.ToolsTableView.setObjectName(_fromUtf8("ToolsTableView")) self.horizontalLayout_3.addWidget(self.ToolsTableView) self.HostsTabWidget.addTab(self.ToolsTab, _fromUtf8(""))
def main(icon_spec): app = QApplication(sys.argv) main_window = QMainWindow() def sigint_handler(*args): main_window.close() signal.signal(signal.SIGINT, sigint_handler) # the timer enables triggering the sigint_handler signal_timer = QTimer() signal_timer.start(100) signal_timer.timeout.connect(lambda: None) tool_bar = QToolBar() main_window.addToolBar(Qt.TopToolBarArea, tool_bar) table_view = QTableView() table_view.setSelectionBehavior(QAbstractItemView.SelectRows) table_view.setSelectionMode(QAbstractItemView.SingleSelection) table_view.setSortingEnabled(True) main_window.setCentralWidget(table_view) proxy_model = QSortFilterProxyModel() proxy_model.setFilterCaseSensitivity(Qt.CaseInsensitive) proxy_model.setFilterKeyColumn(1) table_view.setModel(proxy_model) proxy_model.layoutChanged.connect(table_view.resizeRowsToContents) item_model = QStandardItemModel() proxy_model.setSourceModel(item_model) # get all icons and their available sizes icons = [] all_sizes = set([]) QIcon.setThemeName('Tango') for context, icon_names in icon_spec: for icon_name in icon_names: icon = QIcon.fromTheme(icon_name) sizes = [] for size in icon.availableSizes(): size = (size.width(), size.height()) sizes.append(size) all_sizes.add(size) sizes.sort() icons.append({ 'context': context, 'icon_name': icon_name, 'icon': icon, 'sizes': sizes, }) all_sizes = list(all_sizes) all_sizes.sort() # input field for filter def filter_changed(value): proxy_model.setFilterRegExp(value) table_view.resizeRowsToContents() filter_line_edit = QLineEdit() filter_line_edit.setMaximumWidth(200) filter_line_edit.setPlaceholderText('Filter name') filter_line_edit.setToolTip( 'Filter name optionally using regular expressions (' + QKeySequence(QKeySequence.Find).toString() + ')') filter_line_edit.textChanged.connect(filter_changed) tool_bar.addWidget(filter_line_edit) # actions to toggle visibility of available sizes/columns def action_toggled(index): column = 2 + index table_view.setColumnHidden(column, not table_view.isColumnHidden(column)) table_view.resizeColumnsToContents() table_view.resizeRowsToContents() signal_mapper = QSignalMapper() for i, size in enumerate(all_sizes): action = QAction('%dx%d' % size, tool_bar) action.setCheckable(True) action.setChecked(True) tool_bar.addAction(action) action.toggled.connect(signal_mapper.map) signal_mapper.setMapping(action, i) # set tool tip and handle key sequence tool_tip = 'Toggle visibility of column' if i < 10: digit = ('%d' % (i + 1))[-1] tool_tip += ' (%s)' % QKeySequence('Ctrl+%s' % digit).toString() action.setToolTip(tool_tip) signal_mapper.mapped.connect(action_toggled) # label columns header_labels = ['context', 'name'] for width, height in all_sizes: header_labels.append('%dx%d' % (width, height)) item_model.setColumnCount(len(header_labels)) item_model.setHorizontalHeaderLabels(header_labels) # fill rows item_model.setRowCount(len(icons)) for row, icon_data in enumerate(icons): # context item = QStandardItem(icon_data['context']) item.setFlags(item.flags() ^ Qt.ItemIsEditable) item_model.setItem(row, 0, item) # icon name item = QStandardItem(icon_data['icon_name']) item.setFlags(item.flags() ^ Qt.ItemIsEditable) item_model.setItem(row, 1, item) for index_in_all_sizes, size in enumerate(all_sizes): column = 2 + index_in_all_sizes if size in icon_data['sizes']: # icon as pixmap to keep specific size item = QStandardItem('') pixmap = icon_data['icon'].pixmap(size[0], size[1]) item.setData(pixmap, Qt.DecorationRole) item.setFlags(item.flags() ^ Qt.ItemIsEditable) item_model.setItem(row, column, item) else: # single space to be sortable against icons item = QStandardItem(' ') item.setFlags(item.flags() ^ Qt.ItemIsEditable) item_model.setItem(row, column, item) table_view.resizeColumnsToContents() # manually set row heights because resizeRowsToContents is not working properly for row, icon_data in enumerate(icons): if len(icon_data['sizes']) > 0: max_size = icon_data['sizes'][-1] table_view.setRowHeight(row, max_size[1]) # enable focus find (ctrl+f) and toggle columns (ctrl+NUM) def main_window_keyPressEvent(self, event, old_keyPressEvent=QMainWindow.keyPressEvent): if event.matches(QKeySequence.Find): filter_line_edit.setFocus() return if event.modifiers() == Qt.ControlModifier and event.key( ) >= Qt.Key_0 and event.key() <= Qt.Key_9: index = event.key() - Qt.Key_1 if event.key() == Qt.Key_0: index += 10 action = signal_mapper.mapping(index) if action: action.toggle() return old_keyPressEvent(self, event) main_window.keyPressEvent = MethodType(main_window_keyPressEvent, table_view) # enable copy (ctrl+c) name of icon to clipboard def table_view_keyPressEvent(self, event, old_keyPressEvent=QTableView.keyPressEvent): if event.matches(QKeySequence.Copy): selection_model = self.selectionModel() if selection_model.hasSelection(): index = selection_model.selectedRows()[0] source_index = self.model().mapToSource(index) item = self.model().sourceModel().item(source_index.row(), 1) icon_name = item.data(Qt.EditRole) app.clipboard().setText(icon_name.toString()) return old_keyPressEvent(self, event) table_view.keyPressEvent = MethodType(table_view_keyPressEvent, table_view) main_window.showMaximized() return app.exec_()
def create_wallet_mn_tab(self): w = QWidget() hw = QWidget() self.w_label = QLabel(self.wallet_label()) self.w_add_btn = QPushButton(_('Add / Import')) self.w_file_btn = QPushButton(_('File')) self.w_del_btn = QPushButton(_('Remove')) self.w_up_params_btn = QPushButton(_('Update Params')) self.w_up_coll_btn = QPushButton(_('Change Collateral')) self.w_protx_btn = QPushButton(_('Register')) self.w_up_srv_btn = QPushButton(_('Update Service')) self.w_up_reg_btn = QPushButton(_('Update Registrar')) self.w_add_btn.clicked.connect(self.on_add_masternode) self.w_file_btn.clicked.connect(self.on_file) self.w_del_btn.clicked.connect(self.on_del_masternode) self.w_up_params_btn.clicked.connect(self.on_update_params) self.w_up_coll_btn.clicked.connect(self.on_update_collateral) self.w_protx_btn.clicked.connect(self.on_make_pro_reg_tx) self.w_up_srv_btn.clicked.connect(self.on_make_pro_up_srv_tx) self.w_up_reg_btn.clicked.connect(self.on_make_pro_up_reg_tx) self.w_view = QTableView() self.w_view.setContextMenuPolicy(Qt.CustomContextMenu) self.w_view.customContextMenuRequested.connect(self.create_wallet_menu) self.w_hheader = QHeaderView(Qt.Horizontal, self.w_view) self.w_hheader.setSectionResizeMode(QHeaderView.ResizeToContents) self.w_hheader.setStretchLastSection(True) self.w_view.setHorizontalHeader(self.w_hheader) self.w_view.verticalHeader().hide() self.w_view.setSelectionMode(QAbstractItemView.SingleSelection) self.w_view.setSelectionBehavior(QAbstractItemView.SelectRows) self.w_view.doubleClicked.connect(self.w_mn_dbl_clicked) row_h = self.w_view.verticalHeader().defaultSectionSize() self.w_hheader.setMinimumSectionSize(row_h) src_model = WalletMNsModel(self.manager, self.mn_list, self.gui, row_h) src_model.dataChanged.connect(self.w_data_changed) self.w_model = Dip3FilterProxyModel() self.w_model.setSourceModel(src_model) self.w_view.setModel(self.w_model) sel_model = self.w_view.selectionModel() sel_model.selectionChanged.connect(self.on_wallet_selection_changed) self.w_model.modelReset.connect(self.on_wallet_model_reset) hbox = QHBoxLayout() vbox = QVBoxLayout() hbox.setContentsMargins(0, 0, 0, 0) hbox.addWidget(self.w_label) hbox.addStretch(1) hbox.addWidget(self.w_del_btn) hbox.addWidget(self.w_up_params_btn) hbox.addWidget(self.w_up_coll_btn) hbox.addWidget(self.w_protx_btn) hbox.addWidget(self.w_up_reg_btn) hbox.addWidget(self.w_up_srv_btn) hbox.addWidget(self.w_file_btn) hbox.addWidget(self.w_add_btn) hw.setLayout(hbox) vbox.addWidget(hw) vbox.addWidget(self.w_view) w.setLayout(vbox) self.addTab(w, read_QIcon('tab_dip3.png'), _('Wallet MNs')) if not self.mn_list.protx_loading: self.w_model.reload_data() return w
def init_dtc(self): self.tabs.currentChanged.connect(self.fill_dm01_table) logger.debug("Setting up J1939 DTC User Interface Tab.") self.j1939_dtc_tab = QWidget() self.tabs.addTab(self.j1939_dtc_tab, "J1939 Diagnostic Codes") tab_layout = QGridLayout() #Set up the Table Model/View/Proxy for SPNs dm01_box = QGroupBox("J1939 Active Diagnostic Trouble Codes (DM1)") self.dm01_table = QTableView() self.dm01_data_model = J1939TableModel() self.dm01_table_proxy = Proxy() self.dm01_data_model.setDataDict(self.active_trouble_codes) self.dm01_table_columns = [ "SA", "Source", "SPN", "Suspect Parameter Number Label", "FMI", "FMI Meaning", "FMI Severity", "Count", "Raw Hexadecimal" ] self.dm01_data_model.setDataHeader(self.dm01_table_columns) self.dm01_table_proxy.setSourceModel(self.dm01_data_model) self.dm01_table.setModel(self.dm01_table_proxy) self.dm01_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.dm01_table.setSortingEnabled(True) #Create a layout for that box using the vertical dm01_box_layout = QGridLayout() dm01_box_layout.addWidget(self.dm01_table, 0, 0, 1, 1) dm01_box.setLayout(dm01_box_layout) #Set up the Table Model/View/Proxy for SPNs dm02_box = QGroupBox( "J1939 Previously Active Diagnostic Trouble Codes (DM2)") self.dm02_table = QTableView() self.dm02_data_model = J1939TableModel() self.dm02_table_proxy = Proxy() self.dm02_data_model.setDataDict(self.previous_trouble_codes) self.dm02_table_columns = [ "SA", "Source", "SPN", "Suspect Parameter Number Label", "FMI", "FMI Meaning", "FMI Severity", "Count", "Raw Hexadecimal" ] self.dm02_data_model.setDataHeader(self.dm02_table_columns) self.dm02_table_proxy.setSourceModel(self.dm02_data_model) self.dm02_table.setModel(self.dm02_table_proxy) self.dm02_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.dm02_table.setSortingEnabled(True) self.dm02_request_button = QPushButton( "Request Previously Active DTCs (DM2)") self.dm02_request_button.setToolTip( "Send a J1939 Request Message for the DM02 message (PGN 65227).") self.dm02_request_button.clicked.connect(self.request_dm02) #Create a layout for that box using the vertical dm02_box_layout = QGridLayout() dm02_box_layout.addWidget(self.dm02_table, 0, 0, 1, 2) dm02_box_layout.addWidget(self.dm02_request_button, 1, 0, 1, 1) dm02_box.setLayout(dm02_box_layout) self.j1939_dm4_tab = QWidget() self.tabs.addTab(self.j1939_dm4_tab, "J1939 Freeze Frames") dm4_layout = QGridLayout() #Set up the Table Model/View/Proxy for SPNs dm04_box = QGroupBox("J1939 Freeze Frame Parameters (DM4)") self.dm04_table = QTableView() self.dm04_data_model = J1939TableModel() self.dm04_table_proxy = Proxy() self.dm04_data_model.setDataDict(self.freeze_frame) self.dm04_table_columns = [ "SA", "Source", "SPN", "Suspect Parameter Number Label", "FMI", "FMI Meaning", "FMI Severity", "Count", "Freeze Frame Data", "Raw Hexadecimal" ] self.dm04_data_model.setDataHeader(self.dm04_table_columns) self.dm04_table_proxy.setSourceModel(self.dm04_data_model) self.dm04_table.setModel(self.dm04_table_proxy) self.dm04_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.dm04_table.setSortingEnabled(True) self.dm04_request_button = QPushButton( "Request Freeze Frame Parameters") self.dm04_request_button.setToolTip( "Send a J1939 Request Message for the DM04 message (PGN 65229).") self.dm04_request_button.clicked.connect(self.request_dm04) #Create a layout for that box using the vertical dm04_box_layout = QGridLayout() dm04_box_layout.addWidget(self.dm04_table, 0, 0, 1, 2) dm04_box_layout.addWidget(self.dm04_request_button, 1, 0, 1, 1) dm04_box.setLayout(dm04_box_layout) #setup the layout to be displayed in the box tab_layout.addWidget(dm01_box, 0, 0, 1, 1) tab_layout.addWidget(dm02_box, 1, 0, 1, 1) dm4_layout.addWidget(dm04_box, 0, 0, 1, 1) self.j1939_dtc_tab.setLayout(tab_layout) self.j1939_dm4_tab.setLayout(dm4_layout)
def checkData(self): if self._languages and self._languages[0]: return True return False if __name__ == '__main__': app = QApplication(sys.argv) language_data = [['C', 'Python', 'Rust', 'Perl'], ['C++', 'Ruby', 'Javascript', 'Swift'], ['Java', 'Haskel', 'PHP', 'Kotlin'], ['C#', 'Go', 'Lisp', 'Objective-C']] headers = ['System lang', 'Scripting lang', 'Popular lang', 'Android lang'] language_model = LanguagesTableModel(language_data, headers) app_window = AppWindow(model=language_model) table_widget = QTableView() app_window.addWidget(table_widget, set_model=True) app_window.insertModelRows(4, 3) app_window.removeModelRows(4, 2) app_window.insertModelColumns(0, 5) app_window.removeModelColumns(1, 4) app_window.show() sys.exit(app.exec_())
def __init__(self, parent=None): """Initialize ResultTable with basic layout.""" super(ResultTable, self).__init__(parent) self.view = QTableView() self.view.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)