def __init__(self, *args, **kwargs): super(DirLineEdit, self).__init__(*args, **kwargs) completer = QCompleter() completer.setCompletionMode(QCompleter.PopupCompletion) dirfilter = QDir.AllEntries | QDir.NoDotAndDotDot | QDir.Hidden sortflags = QDir.DirsFirst | QDir.IgnoreCase dirmodel = QDirModel(['*'], dirfilter, sortflags, completer) completer.setModel(dirmodel) self.setCompleter(completer)
def __init__(self, parent, node, node_monitor): super(DynamicNodeIDAllocatorWidget, self).__init__(parent) self.setTitle( 'Dynamic node ID allocation server (uavcan.protocol.dynamic_node_id.*)' ) self._node = node self._node_monitor = node_monitor self._allocator = None self._allocation_table = BasicTable(self, self.COLUMNS, font=get_monospace_font()) self._allocation_table_update_timer = QTimer(self) self._allocation_table_update_timer.setSingleShot(False) self._allocation_table_update_timer.start(500) self._allocation_table_update_timer.timeout.connect(self._update_table) self._start_stop_button = make_icon_button( 'rocket', 'Launch/stop the dynamic node ID allocation server', self, checkable=True) self._start_stop_button.clicked.connect(self._on_start_stop_button) self._database_file = CommitableComboBoxWithHistory(self) self._database_file.setAcceptDrops(True) self._database_file.setToolTip('Path to the allocation table file') self._database_file.setCurrentText(self.DEFAULT_DATABASE_FILE) self._database_file.addItem(self._database_file.currentText()) self._database_file.on_commit = self._on_start_stop_button self._select_database_file = make_icon_button( 'folder-open-o', 'Open allocation table file', self, on_clicked=self._on_select_database_file) db_file_completer = QCompleter() db_file_completer.setModel(QDirModel(db_file_completer)) self._database_file.setCompleter(db_file_completer) self._sync_gui() layout = QVBoxLayout(self) controls_layout = QHBoxLayout(self) controls_layout.addWidget(self._start_stop_button) controls_layout.addWidget(self._database_file, 1) controls_layout.addWidget(self._select_database_file) layout.addLayout(controls_layout) layout.addWidget(self._allocation_table, 1) self.setLayout(layout)
def __init__(self): super(Mapp, self).__init__() self.dir = QDirModel(self) self.tree = QTreeView(self) self.tree.setModel(self.dir) w, h = 800, 600 r = 30 self.tree.setFixedSize(w - r, h - r) self.tree.move(10, 10) self.setFixedSize(w, h) self.tree.clicked.connect(self.montre)
def __init__(self, device_name: str, project_manager: ProjectManager, signal=None, backend_handler=None, network_raw_mode=False, signals=None, parent=None): super().__init__(parent) self.ui = Ui_SniffSettings() self.ui.setupUi(self) signals = signals if signals is not None else [] self.project_manager = project_manager for encoding in self.project_manager.decodings: self.ui.comboBox_sniff_encoding.addItem(encoding.name) self.bootstrap(project_manager.device_conf, signal, enforce_default=True) self.sniffer = ProtocolSniffer( bit_len=self.ui.spinbox_sniff_BitLen.value(), center=self.ui.spinbox_sniff_Center.value(), noise=self.ui.spinbox_sniff_Noise.value(), tolerance=self.ui.spinbox_sniff_ErrorTolerance.value(), modulation_type=self.ui.combox_sniff_Modulation.currentIndex(), device=device_name, backend_handler=BackendHandler() if backend_handler is None else backend_handler, network_raw_mode=network_raw_mode) self.create_connects() self.ui.comboBox_sniff_encoding.currentIndexChanged.emit( self.ui.comboBox_sniff_encoding.currentIndex()) self.ui.comboBox_sniff_viewtype.setCurrentIndex( constants.SETTINGS.value('default_view', 0, int)) # Auto Complete like a Boss completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEdit_sniff_OutputFile.setCompleter(completer) self.signals = signals if len(signals) == 0: self.ui.label_sniff_Signal.hide() self.ui.btn_sniff_use_signal.hide() self.ui.comboBox_sniff_signal.hide() else: for signal in signals: self.ui.comboBox_sniff_signal.addItem(signal.name)
def __init__(self, freq, samp_rate, bw, gain, device, noise, center, bit_length, tolerance, modulation_type_index, parent=None): super().__init__(parent) self.ui = Ui_SniffProtocol() self.ui.setupUi(self) self.setAttribute(Qt.WA_DeleteOnClose) self.ui.spinBoxFreq.setValue(freq) self.ui.spinBoxSampleRate.setValue(samp_rate) self.ui.spinBoxBandwidth.setValue(bw) self.ui.spinBoxGain.setValue(gain) self.ui.spinboxNoise.setValue(noise) self.ui.spinboxCenter.setValue(center) self.ui.spinboxBitLen.setValue(bit_length) self.ui.spinboxErrorTolerance.setValue(tolerance) self.ui.comboxModulation.setCurrentIndex(modulation_type_index) self.sniffer = ProtocolSniffer(bit_length, center, noise, tolerance, modulation_type_index, samp_rate, freq, gain, bw, device) self.sniffer.usrp_ip = self.ui.lineEditIP.text() self.ui.btnStop.setEnabled(False) self.ui.btnClear.setEnabled(False) self.ui.cbDevice.clear() items = [] if constants.SETTINGS.value('usrp_available', type=bool): items.append("USRP") if constants.SETTINGS.value('hackrf_available', type=bool): items.append("HackRF") self.ui.cbDevice.addItems(items) if device in items: self.ui.cbDevice.setCurrentIndex(items.index(device)) self.on_device_edited() ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" ipRegex = QRegExp("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$") self.ui.lineEditIP.setValidator(QRegExpValidator(ipRegex)) # Auto Complete like a Boss completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEditOutputFile.setCompleter(completer) self.create_connects()
def initUI(self): dm = QDirModel() treeview = QTreeView(self) treeview.setModel(dm) vbox = QVBoxLayout() vbox.addWidget(treeview) self.setLayout(vbox) self.resize(640, 480) self.setWindowTitle('TreeView') self.show()
def __init__(self, device_name: str, project_manager: ProjectManager, signal=None, backend_handler=None, network_raw_mode=False, signals=None, parent=None): super().__init__(parent) self.ui = Ui_SniffSettings() self.ui.setupUi(self) signals = signals if signals is not None else [] self.project_manager = project_manager for encoding in self.project_manager.decodings: self.ui.comboBox_sniff_encoding.addItem(encoding.name) self.bootstrap(project_manager.device_conf, signal, enforce_default=True) self.sniffer = ProtocolSniffer(samples_per_symbol=self.ui.spinbox_sniff_SamplesPerSymbol.value(), center=self.ui.spinbox_sniff_Center.value(), center_spacing=self.ui.spinBoxCenterSpacing.value(), noise=self.ui.spinbox_sniff_Noise.value(), tolerance=self.ui.spinbox_sniff_ErrorTolerance.value(), modulation_type=self.ui.combox_sniff_Modulation.currentText(), bits_per_symbol=self.ui.spinBoxBitsPerSymbol.value(), device=device_name, backend_handler=BackendHandler() if backend_handler is None else backend_handler, network_raw_mode=network_raw_mode) self.sniffer.adaptive_noise = self.ui.checkBoxAdaptiveNoise.isChecked() self.sniffer.automatic_center = self.ui.checkBoxAutoCenter.isChecked() self.__set_center_offset_visibility() self.create_connects() self.ui.comboBox_sniff_encoding.currentIndexChanged.emit(self.ui.comboBox_sniff_encoding.currentIndex()) self.ui.comboBox_sniff_viewtype.setCurrentIndex(settings.read('default_view', 0, int)) # Auto Complete like a Boss completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEdit_sniff_OutputFile.setCompleter(completer) self.signals = signals if len(signals) == 0: self.ui.label_sniff_Signal.hide() self.ui.btn_sniff_use_signal.hide() self.ui.comboBox_sniff_signal.hide() else: for signal in signals: self.ui.comboBox_sniff_signal.addItem(signal.name)
def __init__(self, parent=None): super().__init__(parent) completer = QCompleter() completer.setModel(QDirModel(completer)) self.line_edit_external_program = QLineEdit() self.line_edit_external_program.setCompleter(completer) self.line_edit_external_program.setPlaceholderText( "Type in a path to external program.") self.layout = QHBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.addWidget(self.line_edit_external_program) self.setLayout(self.layout)
def __init__(self, proPath, parent=None): super(MyMainWindow, self).__init__(parent) # self.setCentralWidget(self.widget) self.proPath = proPath #************** 初始化窗口 self.setupUi(self) # 设置窗口的标题 self.setWindowTitle('ftpFilesys') # 设置窗口的图标,引用当前目录下的web.png图片 self.setWindowIcon(QIcon(self.proPath + '/Icon/LOGO.jpg')) self.setSignal() self.downing = True #************** 初始化按键 # self.Bt_down.setEnabled(False) self.Bt_up.setEnabled(False) # 创建SSH对象 self.ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机,否则可能报错:paramiko.ssh_exception.SSHException: Server '192.168.43.140' not found in known_hosts self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.ftp_root = "/home/sd/ftp/biaodingCloud" #************** 初始化变量 """FTP窗口""" self.ftp = myFTP() # 实例化FTP self.ftp.encoding = "utf-8" self.select_file = "" # listView中选择的文件名 self.file_list = [] # 存放查询FTP返回的当前目录所有文件列表 self.ftp_tip = [] #存储当前登陆信息 """本地窗口""" # self.sysfile = QFileSystemModel() # 获取本地文件系统 # self.sysfile.setRootPath('') # self.treeView_local.setModel(self.sysfile) self.model = QDirModel() self.model.setFilter(QtCore.QDir.Dirs | QtCore.QDir.NoDotAndDotDot) self.treeView_local.header().hide() # 隐藏表头 self.treeView_local.setModel(self.model) for col in range(1, 4): self.treeView_local.setColumnHidden(col, True) self.save_path = "" # self.treeView_local.setRootIndex(self.model.index(self.save_path)) self.save_name = "" self.lineEdit_ip.setText("192.168.200.11") self.lineEdit_port.setText("21") self.lineEdit_user.setText("admin") self.lineEdit_pwd.setText("123")
def __init__(self, device_name: str, project_manager: ProjectManager, signal=None, backend_handler=None, network_raw_mode=False, real_time=False, parent=None): super().__init__(parent) self.ui = Ui_SniffSettings() self.ui.setupUi(self) conf = project_manager.device_conf bit_length = conf.get("bit_len", signal.bit_len if signal else 100) modulation_type_index = conf.get("modulation_index", signal.modulation_type if signal else 1) tolerance = conf.get("tolerance", signal.tolerance if signal else 5) noise = conf.get("noise", signal.noise_threshold if signal else 0.001) center = conf.get("center", signal.qad_center if signal else 0.02) decoding_name = conf.get("decoding_name", "") self.sniffer = ProtocolSniffer(bit_len=bit_length, center=center, noise=noise, tolerance=tolerance, modulation_type=modulation_type_index, device=device_name, backend_handler=BackendHandler() if backend_handler is None else backend_handler, network_raw_mode=network_raw_mode, real_time=real_time) self.ui.spinbox_sniff_Noise.setValue(noise) self.ui.spinbox_sniff_Center.setValue(center) self.ui.spinbox_sniff_BitLen.setValue(bit_length) self.ui.spinbox_sniff_ErrorTolerance.setValue(tolerance) self.ui.combox_sniff_Modulation.setCurrentIndex(modulation_type_index) self.project_manager = project_manager for encoding in self.project_manager.decodings: self.ui.comboBox_sniff_encoding.addItem(encoding.name) self.create_connects() if decoding_name: self.ui.comboBox_sniff_encoding.setCurrentText(decoding_name) self.ui.comboBox_sniff_viewtype.setCurrentIndex(constants.SETTINGS.value('default_view', 0, int)) # Auto Complete like a Boss completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEdit_sniff_OutputFile.setCompleter(completer)
def __init__(self): super(Demo, self).__init__() self.dir_model = QDirModel(self) # 2 self.list_view = QListView(self) # 3 self.tree_view = QTreeView(self) self.table_view = QTableView(self) self.list_view.setModel(self.dir_model) self.tree_view.setModel(self.dir_model) self.table_view.setModel(self.dir_model) self.tree_view.doubleClicked.connect(self.show_func) # 4 # self.setOrientation(Qt.Vertical) # 5 self.addWidget(self.list_view) self.addWidget(self.tree_view) self.insertWidget(0, self.table_view) self.setSizes([300, 200, 200]) print(self.count())
def __init__(self, filename="", parent=None): super().__init__(parent) self.ui = Ui_DialogCSVImport() self.ui.setupUi(self) self.setAttribute(Qt.WA_DeleteOnClose) self.ui.btnAutoDefault.hide() completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEditFilename.setCompleter(completer) self.filename = None # type: str self.ui.lineEditFilename.setText(filename) self.update_file() self.ui.tableWidgetPreview.setColumnHidden(self.COLUMNS["T"], True) self.update_preview() self.create_connects()
def __init__(self): super(Demo, self).__init__() self.resize(600, 300) self.model = QDirModel(self) # 1 self.model.setReadOnly(False) self.model.setSorting(QDir.Name | QDir.IgnoreCase) self.tree = QTreeView(self) # 2 self.tree.setModel(self.model) self.tree.clicked.connect(self.show_info) self.index = self.model.index(QDir.currentPath()) self.tree.expand(self.index) self.tree.scrollTo(self.index) self.info_label = QLabel(self) # 3 self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.tree) self.v_layout.addWidget(self.info_label) self.setLayout(self.v_layout)
def __init__(self, parent): super(ManualInstallWidget, self).__init__() self._parent = parent vbox = QVBoxLayout(self) form = QFormLayout() self._txtName = QLineEdit() self._txtName.setPlaceholderText('my_plugin') self._txtVersion = QLineEdit() self._txtVersion.setPlaceholderText('0.1') form.addRow(translations.TR_PROJECT_NAME, self._txtName) form.addRow(translations.TR_VERSION, self._txtVersion) vbox.addLayout(form) hPath = QHBoxLayout() self._txtFilePath = QLineEdit() self._txtFilePath.setPlaceholderText( os.path.join(os.path.expanduser('~'), 'full', 'path', 'to', 'plugin.zip')) self._btnFilePath = QPushButton(QIcon(":img/open"), '') self.completer, self.dirs = QCompleter(self), QDirModel(self) self.dirs.setFilter(QDir.AllEntries | QDir.NoDotAndDotDot) self.completer.setModel(self.dirs) self._txtFilePath.setCompleter(self.completer) hPath.addWidget(QLabel(translations.TR_FILENAME)) hPath.addWidget(self._txtFilePath) hPath.addWidget(self._btnFilePath) vbox.addLayout(hPath) vbox.addSpacerItem( QSpacerItem(0, 1, QSizePolicy.Expanding, QSizePolicy.Expanding)) hbox = QHBoxLayout() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) self._btnInstall = QPushButton(translations.TR_INSTALL) hbox.addWidget(self._btnInstall) vbox.addLayout(hbox) #Signals self._btnFilePath.clicked['bool'].connect(self._load_plugin_path) self._btnInstall.clicked['bool'].connect(self.install_plugin)
def __init__(self, parent, default=None): super(PathItem, self).__init__(parent) self.on_remove = lambda _: None self.on_path_changed = lambda *_: None self._remove_button = make_icon_button('remove', 'Remove this path', self, on_clicked=lambda: self.on_remove(self)) completer = QCompleter(self) completer.setModel(QDirModel(completer)) self._path_bar = CommitableComboBoxWithHistory(self) if default: self._path_bar.setCurrentText(default) self._path_bar.setCompleter(completer) self._path_bar.setAcceptDrops(True) self._path_bar.setToolTip('Lookup path for file services; should point either to a file or to a directory') self._path_bar.currentTextChanged.connect(self._on_path_changed) self._select_file_button = make_icon_button('file-o', 'Specify file path', self, on_clicked=self._on_select_path_file) self._select_dir_button = make_icon_button('folder-open-o', 'Specify directory path', self, on_clicked=self._on_select_path_directory) self._hit_count_label = LabelWithIcon(get_icon('upload'), '0', self) self._hit_count_label.setToolTip('Hit count') layout = QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._remove_button) layout.addWidget(self._path_bar, 1) layout.addWidget(self._select_file_button) layout.addWidget(self._select_dir_button) layout.addWidget(self._hit_count_label) self.setLayout(layout)
def __init__(self, parent): super(ProjectExecution, self).__init__() self._parent = parent grid = QGridLayout(self) grid.addWidget(QLabel(translations.TR_PROJECT_MAIN_FILE), 0, 0) # Main file self.path = QLineEdit() choose_main_file_action = QAction(self) choose_main_file_action.setIcon( self.style().standardIcon(self.style().SP_FileIcon)) choose_main_file_action.setToolTip( translations.TR_PROJECT_SELECT_MAIN_FILE) self.path.addAction( choose_main_file_action, QLineEdit.TrailingPosition) clear_main_file_action = self.path.addAction( self.style().standardIcon(self.style().SP_LineEditClearButton), QLineEdit.TrailingPosition) clear_main_file_action.triggered.connect(self.path.clear) self.path.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'main.py')) self.path.setText(self._parent.project.main_file) grid.addWidget(self.path, 0, 1) # this should be changed, and ALL pythonPath names to # python_custom_interpreter or something like that. this is NOT the # PYTHONPATH self.line_interpreter = QLineEdit() choose_interpreter = self.line_interpreter.addAction( self.style().standardIcon(self.style().SP_DirIcon), QLineEdit.TrailingPosition) self.line_interpreter.setText(self._parent.project.python_exec) completer = QCompleter(utils.get_python()) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setFilterMode(Qt.MatchContains) self.line_interpreter.setCompleter(completer) self.line_interpreter.setPlaceholderText("python") grid.addWidget(QLabel( translations.TR_PROJECT_PYTHON_INTERPRETER), 1, 0) grid.addWidget(self.line_interpreter, 1, 1) # PYTHONPATH grid.addWidget(QLabel(translations.TR_PROJECT_PYTHON_PATH), 2, 0) self.txt_python_path = QPlainTextEdit() # TODO : better widget self.txt_python_path.setPlainText(self._parent.project.python_path) self.txt_python_path.setToolTip(translations.TR_PROJECT_PATH_PER_LINE) grid.addWidget(self.txt_python_path, 2, 1) # Additional builtins/globals for pyflakes grid.addWidget(QLabel(translations.TR_PROJECT_BUILTINS), 3, 0) self.additional_builtins = QLineEdit() self.additional_builtins.setText( ' '.join(self._parent.project.additional_builtins)) self.additional_builtins.setToolTip( translations.TR_PROJECT_BUILTINS_TOOLTIP) grid.addWidget(self.additional_builtins, 3, 1) # Pre script self._line_pre_exec = QLineEdit() choose_pre_exec = QAction(self) choose_pre_exec.setToolTip( "Choose Script to execute before run project") choose_pre_exec.setIcon( self.style().standardIcon(self.style().SP_FileIcon)) self._line_pre_exec.addAction( choose_pre_exec, QLineEdit.TrailingPosition) clear_pre_action = self._line_pre_exec.addAction( self.style().standardIcon(self.style().SP_LineEditClearButton), QLineEdit.TrailingPosition) clear_pre_action.triggered.connect(self._line_pre_exec.clear) self._line_pre_exec.setReadOnly(True) self._line_pre_exec.setText(self._parent.project.pre_exec_script) self._line_pre_exec.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'script.sh')) grid.addWidget(QLabel(translations.TR_PROJECT_PRE_EXEC), 4, 0) grid.addWidget(self._line_pre_exec, 4, 1) # Post script self._line_post_exec = QLineEdit() choose_post_exec = QAction(self) choose_post_exec.setToolTip( "Choose script to execute after run project") choose_post_exec.setIcon( self.style().standardIcon(self.style().SP_FileIcon)) self._line_post_exec.addAction( choose_post_exec, QLineEdit.TrailingPosition) clear_post_action = self._line_post_exec.addAction( self.style().standardIcon(self.style().SP_LineEditClearButton), QLineEdit.TrailingPosition) clear_post_action.triggered.connect(self._line_post_exec.clear) self._line_post_exec.setReadOnly(True) self._line_post_exec.setText(self._parent.project.post_exec_script) self._line_post_exec.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'script.sh')) grid.addWidget(QLabel(translations.TR_PROJECT_POST_EXEC), 5, 0) grid.addWidget(self._line_post_exec, 5, 1) # grid.addItem(QSpacerItem(5, 10, QSizePolicy.Expanding, # QSizePolicy.Expanding), 6, 0) # Properties grid.addWidget(QLabel(translations.TR_PROJECT_PROPERTIES), 7, 0) self._line_params = QLineEdit() self._line_params.setToolTip(translations.TR_PROJECT_PARAMS_TOOLTIP) self._line_params.setText(self._parent.project.program_params) self._line_params.setPlaceholderText('verbose, debug, force') grid.addWidget(QLabel(translations.TR_PROJECT_PARAMS), 8, 0) grid.addWidget(self._line_params, 8, 1) # Widgets for virtualenv properties self.txtVenvPath = QLineEdit() # ui_tools.LineEditButton( # self.txtVenvPath, self.txtVenvPath.clear, # self.style().standardPixmap(self.style().SP_TrashIcon)) self.txtVenvPath.setText(self._parent.project.venv) self._dir_completer = QCompleter() self._dir_completer.setModel(QDirModel(self._dir_completer)) self.txtVenvPath.setCompleter(self._dir_completer) self.txtVenvPath.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'virtualenv')) # self.btnVenvPath = QPushButton(QIcon(":img/open"), '') grid.addWidget(QLabel(translations.TR_PROJECT_VIRTUALENV), 9, 0) grid.addWidget(self.txtVenvPath, 9, 1) # grid.addWidget(self.btnVenvPath, 9, 2) choose_main_file_action.triggered.connect(self.select_file) choose_interpreter.triggered.connect(self._load_python_path) choose_pre_exec.triggered.connect(self.select_pre_exec_script) choose_post_exec.triggered.connect(self.select_post_exec_script)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(827, 516) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.treeView = QtWidgets.QTreeView(self.centralwidget) self.treeView.setGeometry(QtCore.QRect(0, 0, 331, 499)) self.treeView.setObjectName("treeView") self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) self.tabWidget.setGeometry(QtCore.QRect(329, 0, 501, 499)) font = QtGui.QFont() font.setPointSize(13) self.tabWidget.setFont(font) self.tabWidget.setObjectName("tabWidget") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.lineEdit = QtWidgets.QLineEdit(self.tab) self.lineEdit.setGeometry(QtCore.QRect(9, 40, 421, 31)) self.lineEdit.setObjectName("lineEdit") self.label = QtWidgets.QLabel(self.tab) self.label.setGeometry(QtCore.QRect(9, 10, 70, 31)) font = QtGui.QFont() font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setObjectName("label") self.pushButton = QtWidgets.QPushButton(self.tab) self.pushButton.setGeometry(QtCore.QRect(435, 40, 51, 31)) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.get_window_size) self.line = QtWidgets.QFrame(self.tab) self.line.setGeometry(QtCore.QRect(5, 80, 485, 3)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.line_2 = QtWidgets.QFrame(self.tab) self.line_2.setGeometry(QtCore.QRect(5, 10, 485, 3)) self.line_2.setFrameShape(QtWidgets.QFrame.HLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.line_3 = QtWidgets.QFrame(self.tab) self.line_3.setGeometry(QtCore.QRect(3, 10, 3, 70)) self.line_3.setFrameShape(QtWidgets.QFrame.VLine) self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_3.setObjectName("line_3") self.line_4 = QtWidgets.QFrame(self.tab) self.line_4.setGeometry(QtCore.QRect(490, 10, 3, 70)) self.line_4.setFrameShape(QtWidgets.QFrame.VLine) self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_4.setObjectName("line_4") self.tabWidget.addTab(self.tab, "") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.line_9 = QtWidgets.QFrame(self.tab_2) self.line_9.setGeometry(QtCore.QRect(5, 10, 485, 3)) self.line_9.setFrameShape(QtWidgets.QFrame.HLine) self.line_9.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_9.setObjectName("line_9") self.line_10 = QtWidgets.QFrame(self.tab_2) self.line_10.setGeometry(QtCore.QRect(3, 10, 3, 70)) self.line_10.setFrameShape(QtWidgets.QFrame.VLine) self.line_10.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_10.setObjectName("line_10") self.line_11 = QtWidgets.QFrame(self.tab_2) self.line_11.setGeometry(QtCore.QRect(490, 10, 3, 70)) self.line_11.setFrameShape(QtWidgets.QFrame.VLine) self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_11.setObjectName("line_11") self.line_12 = QtWidgets.QFrame(self.tab_2) self.line_12.setGeometry(QtCore.QRect(5, 80, 485, 3)) self.line_12.setFrameShape(QtWidgets.QFrame.HLine) self.line_12.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_12.setObjectName("line_12") self.label_3 = QtWidgets.QLabel(self.tab_2) self.label_3.setGeometry(QtCore.QRect(9, 10, 70, 31)) self.label_3.setObjectName("label_3") self.lineEdit_3 = QtWidgets.QLineEdit(self.tab_2) self.lineEdit_3.setGeometry(QtCore.QRect(9, 40, 421, 31)) self.lineEdit_3.setObjectName("lineEdit_3") self.pushButton_3 = QtWidgets.QPushButton(self.tab_2) self.pushButton_3.setGeometry(QtCore.QRect(435, 40, 51, 31)) self.pushButton_3.setObjectName("pushButton_3") self.tabWidget.addTab(self.tab_2, "") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 827, 17)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) #treeview model model = QDirModel() #model.index('E:\\workspace\\cody\cody\\treeview') self.treeView.setModel(model) self.treeView.setRootIndex(model.index('E:\\workspace\\cody\cody\\treeview')) self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def __init__(self, installed_plugins, highlighted_plugins=None, parent=None): super().__init__(parent) self.backend_handler = BackendHandler() self.ui = Ui_DialogOptions() self.ui.setupUi(self) self.setWindowFlags(Qt.Window) self.device_options_model = DeviceOptionsTableModel( self.backend_handler, self) self.device_options_model.update() self.ui.tblDevices.setModel(self.device_options_model) self.ui.tblDevices.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.ui.tblDevices.setItemDelegateForColumn( 1, ComboBoxDelegate(["native", "GNU Radio"])) self.setAttribute(Qt.WA_DeleteOnClose) layout = QHBoxLayout(self.ui.tab_plugins) self.plugin_controller = PluginFrame(installed_plugins, highlighted_plugins, parent=self) layout.addWidget(self.plugin_controller) self.ui.tab_plugins.setLayout(layout) self.ui.btnViewBuildLog.hide() self.build_log = "" # We use bundled native device backends on windows, so no need to reconfigure them self.ui.groupBoxNativeOptions.setVisible(sys.platform != "win32") self.ui.labelIconTheme.setVisible(sys.platform == "linux") self.ui.comboBoxIconTheme.setVisible(sys.platform == "linux") self.ui.comboBoxTheme.setCurrentIndex( settings.read("theme_index", 0, int)) self.ui.comboBoxIconTheme.setCurrentIndex( settings.read("icon_theme_index", 0, int)) self.ui.checkBoxShowConfirmCloseDialog.setChecked( not settings.read('not_show_close_dialog', False, bool)) self.ui.checkBoxHoldShiftToDrag.setChecked( settings.read('hold_shift_to_drag', True, bool)) self.ui.checkBoxDefaultFuzzingPause.setChecked( settings.read('use_default_fuzzing_pause', True, bool)) self.ui.checkBoxAlignLabels.setChecked( settings.read('align_labels', True, bool)) self.ui.doubleSpinBoxRAMThreshold.setValue( 100 * settings.read('ram_threshold', 0.6, float)) if self.backend_handler.gr_python_interpreter: self.ui.lineEditGRPythonInterpreter.setText( self.backend_handler.gr_python_interpreter) self.ui.doubleSpinBoxFuzzingPause.setValue( settings.read("default_fuzzing_pause", 10**6, int)) self.ui.doubleSpinBoxFuzzingPause.setEnabled( settings.read('use_default_fuzzing_pause', True, bool)) self.ui.checkBoxMultipleModulations.setChecked( settings.read("multiple_modulations", False, bool)) self.ui.radioButtonLowModulationAccuracy.setChecked( Modulator.get_dtype() == np.int8) self.ui.radioButtonMediumModulationAccuracy.setChecked( Modulator.get_dtype() == np.int16) self.ui.radioButtonHighModulationAccuracy.setChecked( Modulator.get_dtype() == np.float32) completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEditGRPythonInterpreter.setCompleter(completer) self.ui.spinBoxFontSize.setValue(qApp.font().pointSize()) self.refresh_device_tab() self.create_connects() self.old_show_pause_as_time = False self.field_type_table_model = FieldTypeTableModel([], parent=self) self.ui.tblLabeltypes.setModel(self.field_type_table_model) self.ui.tblLabeltypes.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.ui.tblLabeltypes.setItemDelegateForColumn( 1, ComboBoxDelegate([f.name for f in FieldType.Function], return_index=False, parent=self)) self.ui.tblLabeltypes.setItemDelegateForColumn( 2, ComboBoxDelegate(ProtocolLabel.DISPLAY_FORMATS, parent=self)) self.read_options() self.old_default_view = self.ui.comboBoxDefaultView.currentIndex() self.old_num_sending_repeats = self.ui.spinBoxNumSendingRepeats.value() self.ui.labelRebuildNativeStatus.setText("") self.show_available_colormaps() try: self.restoreGeometry( settings.read("{}/geometry".format(self.__class__.__name__))) except TypeError: pass
def setup_ui(self): self.ui.setupUi(self) # 0. Dialog self.ui.buttonApplyChanges.clicked.connect(self.onApplyChanges) self.ui.buttonCancel.clicked.connect(self.onCancel) self.ui.tabsPreferences.setCurrentIndex(0) # 1. Search tab # - Filter languages self._filterLanguageComboBoxes = {} self._search_languages = {lang: False for lang in all_languages()} nb_columns_languages = 4 for lang_i, lang in enumerate(all_languages()): row = lang_i // nb_columns_languages column = lang_i % nb_columns_languages checkBox = QCheckBox(_(lang.generic_name()), self.ui.scrollAreaWidgetSearch) def createSearchLangSlot(lang): @pyqtSlot(bool) def onSearchLangCheckBoxToggled(toggled): self.searchLanguageChanged.emit(lang, toggled) return onSearchLangCheckBoxToggled checkBox.toggled.connect(createSearchLangSlot(lang)) checkBox.setChecked(self._search_languages[lang]) self._filterLanguageComboBoxes[lang] = checkBox self.ui.scrollAreaWidgetLayoutSearch.addWidget( checkBox, row, column) self.searchLanguageChanged.connect(self.onSearchLanguageChanged) fontSearchItem = self._filterLanguageComboBoxes[ UnknownLanguage.create_generic()].font() fontSearchItem.setItalic(True) self._filterLanguageComboBoxes[ UnknownLanguage.create_generic()].setFont(fontSearchItem) # 2. Download tab # - Download Destination self._dlDestinationType = self.DEFAULT_DLDESTINATIONTYPE def create_dlDestinationTypeChangedSlot(dlDestinationType): @pyqtSlot(bool) def dlDestinationTypeChanged(toggled): if toggled: self.dlDestinationTypeChanged.emit(dlDestinationType) return dlDestinationTypeChanged self.ui.optionDlDestinationAsk.toggled.connect( create_dlDestinationTypeChangedSlot( self.DLDESTINATIONTYPE_ASKUSER)) self.ui.optionDlDestinationSame.toggled.connect( create_dlDestinationTypeChangedSlot( self.DLDESTINATIONTYPE_SAMEFOLDER)) self.ui.optionDlDestinationUser.toggled.connect( create_dlDestinationTypeChangedSlot( self.DLDESTINATIONTYPE_PREDEFINEDFOLDER)) self.dlDestinationTypeChanged.connect(self.onDlDestinationTypeChange) self.ui.optionDlDestinationUser.toggled.connect( self.ui.inputDlDestinationUser.setEnabled) self.ui.optionDlDestinationUser.toggled.connect( self.ui.buttonDlDestinationUser.setEnabled) self.ui.optionDlDestinationUser.toggled.emit(False) # Always contains a valid download destination folder self._dlDestinationPredefined = '' # FIXME: good default (USER HOME? USER DOWNLOADS?) dlDestinationCompleter = QCompleter() dlDestinationCompleter.setModel( QDirModel([], QDir.Dirs | QDir.NoDotAndDotDot, QDir.Name, dlDestinationCompleter)) self.ui.inputDlDestinationUser.setCompleter(dlDestinationCompleter) self.ui.inputDlDestinationUser.editingFinished.connect( self.onInputDlDestinationEditingFinished) self.ui.buttonDlDestinationUser.clicked.connect( self.onButtonDlDestinationClicked) # - Subtitle Filename self._subtitleFilename = self.DEFAULT_DLSUBFN def create_dlSubtitleFileNameChangedSlot(subtitleFilename): @pyqtSlot(bool) def subtitleFileNameChanged(toggled): if toggled: self.subtitleFilenameChanged.emit(subtitleFilename) return subtitleFileNameChanged self.ui.optionSubFnSame.toggled.connect( create_dlSubtitleFileNameChangedSlot(self.DLSUBFN_SAME)) self.ui.optionSubFnSameLang.toggled.connect( create_dlSubtitleFileNameChangedSlot(self.DLSUBFN_SAMELANG)) self.ui.optionSubFnSameLangUploader.toggled.connect( create_dlSubtitleFileNameChangedSlot( self.DLSUBFN_SAMELANGUPLOADER)) self.ui.optionSubFnOnline.toggled.connect( create_dlSubtitleFileNameChangedSlot(self.DLSUBFN_ONLINE)) self.subtitleFilenameChanged.connect(self.onSubtitleFilenameChange) # 3. Upload tab # - Default Subtitle Language self._uploadLanguage = self.DEFAULT_UL_LANG self.ui.optionUlDefaultLanguage.set_unknown_text(_('Auto Detect')) self.ui.optionUlDefaultLanguage.set_selected_language( self._uploadLanguage) self.ui.optionUlDefaultLanguage.selected_language_changed.connect( self.onOptionUlDefaultLanguageChange) # 4. Network tab self.ui.inputProxyPort.setRange(0, 65535) # 5. Others tab # - Interface Language self._original_interface_language = UnknownLanguage.create_generic() self.ui.optionInterfaceLanguage.set_unknown_text(_('System Language')) self.ui.optionUlDefaultLanguage.set_selected_language( self.DEFAULT_INTERFACE_LANG) # - Video Application Location self.ui.buttonVideoAppLocationChoose.clicked.connect( self.onButtonVideoAppLocationChoose) self.ui.buttonHelpTranslation.clicked.connect(self.onHelpTranslate) self.settings = QSettings() # FIXME: use config path self.readSettings()
def __init__(self, project_manager, noise, center, bit_length, tolerance, modulation_type_index, encodings, encoding_index=0, parent=None, testing_mode=False): super().__init__(project_manager, is_tx=False, parent=parent, testing_mode=testing_mode) self.set_sniff_ui_items_visible(True) self.graphics_view = self.ui.graphicsView_sniff_Preview self.ui.stackedWidget.setCurrentWidget(self.ui.page_sniff) self.hide_send_ui_items() self.hide_receive_ui_items() self.ui.sliderYscale.hide() self.ui.label_y_scale.hide() self.ui.spinbox_sniff_Noise.setValue(noise) self.ui.spinbox_sniff_Center.setValue(center) self.ui.spinbox_sniff_BitLen.setValue(bit_length) self.ui.spinbox_sniff_ErrorTolerance.setValue(tolerance) self.ui.combox_sniff_Modulation.setCurrentIndex(modulation_type_index) self.sniffer = ProtocolSniffer(bit_length, center, noise, tolerance, modulation_type_index, self.ui.cbDevice.currentText(), self.backend_handler) # set really in on_device_started self.scene_manager = None # type: LiveSceneManager self.init_device() self.set_bandwidth_status() self.graphics_view.setScene(self.scene_manager.scene) self.graphics_view.scene_manager = self.scene_manager # Auto Complete like a Boss completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEdit_sniff_OutputFile.setCompleter(completer) self.setWindowTitle(self.tr("Sniff Protocol")) self.setWindowIcon(QIcon.fromTheme(":/icons/data/icons/sniffer.svg")) self.encodings = encodings for encoding in self.encodings: self.ui.comboBox_sniff_encoding.addItem(encoding.name) self.create_connects() if encoding_index > -1: self.ui.comboBox_sniff_encoding.setCurrentIndex(encoding_index) self.ui.comboBox_sniff_viewtype.setCurrentIndex( constants.SETTINGS.value('default_view', 0, int))
def __init__(self, parent): super(GeneralExecution, self).__init__() self._preferences = parent vbox = QVBoxLayout(self) groupExecution = QGroupBox(translations.TR_WORKSPACE_PROJECTS) grid = QVBoxLayout(groupExecution) #Python Path hPath = QHBoxLayout() self._txtPythonPath = QLineEdit() self._btnPythonPath = QPushButton(QIcon(':img/open'), '') self.completer, self.dirs = QCompleter(self), QDirModel(self) self.dirs.setFilter(QDir.AllEntries | QDir.NoDotAndDotDot) self.completer.setModel(self.dirs) self._txtPythonPath.setCompleter(self.completer) hPath.addWidget(QLabel(translations.TR_SELECT_PYTHON_EXEC)) hPath.addWidget(self._txtPythonPath) hPath.addWidget(self._btnPythonPath) grid.addLayout(hPath) #Python Miscellaneous Execution options self.check_B = QCheckBox(translations.TR_SELECT_EXEC_OPTION_B) self.check_d = QCheckBox(translations.TR_SELECT_EXEC_OPTION_D) self.check_E = QCheckBox(translations.TR_SELECT_EXEC_OPTION_E) self.check_O = QCheckBox(translations.TR_SELECT_EXEC_OPTION_O) self.check_OO = QCheckBox(translations.TR_SELECT_EXEC_OPTION_OO) self.check_Q = QCheckBox(translations.TR_SELECT_EXEC_OPTION_Q) self.comboDivision = QComboBox() self.comboDivision.addItems(['old', 'new', 'warn', 'warnall']) self.check_s = QCheckBox(translations.TR_SELECT_EXEC_OPTION_s) self.check_S = QCheckBox(translations.TR_SELECT_EXEC_OPTION_S) self.check_t = QCheckBox(translations.TR_SELECT_EXEC_OPTION_T) self.check_tt = QCheckBox(translations.TR_SELECT_EXEC_OPTION_TT) self.check_v = QCheckBox(translations.TR_SELECT_EXEC_OPTION_V) self.check_W = QCheckBox(translations.TR_SELECT_EXEC_OPTION_W) self.comboWarning = QComboBox() self.comboWarning.addItems( ['default', 'ignore', 'all', 'module', 'once', 'error']) self.check_x = QCheckBox(translations.TR_SELECT_EXEC_OPTION_X) self.check_3 = QCheckBox(translations.TR_SELECT_EXEC_OPTION_3) grid.addWidget(self.check_B) grid.addWidget(self.check_d) grid.addWidget(self.check_E) grid.addWidget(self.check_O) grid.addWidget(self.check_OO) hDiv = QHBoxLayout() hDiv.addWidget(self.check_Q) hDiv.addWidget(self.comboDivision) grid.addLayout(hDiv) grid.addWidget(self.check_s) grid.addWidget(self.check_S) grid.addWidget(self.check_t) grid.addWidget(self.check_tt) grid.addWidget(self.check_v) hWarn = QHBoxLayout() hWarn.addWidget(self.check_W) hWarn.addWidget(self.comboWarning) grid.addLayout(hWarn) grid.addWidget(self.check_x) grid.addWidget(self.check_3) #Settings self._txtPythonPath.setText(settings.PYTHON_EXEC) options = settings.EXECUTION_OPTIONS.split() if '-B' in options: self.check_B.setChecked(True) if '-d' in options: self.check_d.setChecked(True) if '-E' in options: self.check_E.setChecked(True) if '-O' in options: self.check_O.setChecked(True) if '-OO' in options: self.check_OO.setChecked(True) if settings.EXECUTION_OPTIONS.find('-Q') > -1: self.check_Q.setChecked(True) index = settings.EXECUTION_OPTIONS.find('-Q') opt = settings.EXECUTION_OPTIONS[index + 2:].split(' ', 1)[0] index = self.comboDivision.findText(opt) self.comboDivision.setCurrentIndex(index) if '-s' in options: self.check_s.setChecked(True) if '-S' in options: self.check_S.setChecked(True) if '-t' in options: self.check_t.setChecked(True) if '-tt' in options: self.check_tt.setChecked(True) if '-v' in options: self.check_v.setChecked(True) if settings.EXECUTION_OPTIONS.find('-W') > -1: self.check_W.setChecked(True) index = settings.EXECUTION_OPTIONS.find('-W') opt = settings.EXECUTION_OPTIONS[index + 2:].split(' ', 1)[0] index = self.comboWarning.findText(opt) self.comboWarning.setCurrentIndex(index) if '-x' in options: self.check_x.setChecked(True) if '-3' in options: self.check_3.setChecked(True) vbox.addWidget(groupExecution) #Signals self._btnPythonPath.clicked['bool'].connect(self._load_python_path) self._preferences.savePreferences.connect(self.save)
def __init__(self, parent): super(ProjectExecution, self).__init__() self._parent = parent grid = QGridLayout(self) grid.addWidget(QLabel(translations.TR_PROJECT_MAIN_FILE), 0, 0) self.path = QLineEdit() self.path.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'main.py')) ui_tools.LineEditButton( self.path, self.path.clear, self.style().standardPixmap(self.style().SP_TrashIcon)) self.path.setText(self._parent.project.main_file) self.path.setReadOnly(True) self.btnBrowse = QPushButton( QIcon(self.style().standardPixmap(self.style().SP_FileIcon)), '') grid.addWidget(self.path, 0, 1) grid.addWidget(self.btnBrowse, 0, 2) # this should be changed, and ALL pythonPath names to # python_custom_interpreter or something like that. this is NOT the # PYTHONPATH self.txtPythonInterpreter = QLineEdit() self.txtPythonInterpreter.setText(self._parent.project.python_exec) self.txtPythonInterpreter.setCompleter( QCompleter( ('python', 'python2', 'python3', 'python.exe', 'pythonw.exe'))) self.txtPythonInterpreter.setPlaceholderText("python") self.btnPythonPath = QPushButton(QIcon(":img/open"), '') grid.addWidget(QLabel(translations.TR_PROJECT_PYTHON_INTERPRETER), 1, 0) grid.addWidget(self.txtPythonInterpreter, 1, 1) grid.addWidget(self.btnPythonPath, 1, 2) grid.addWidget(QLabel(translations.TR_PROJECT_PYTHON_PATH), 2, 0) self.txtPythonPath = QPlainTextEdit() # TODO : better widget self.txtPythonPath.setPlainText(self._parent.project.python_path) self.txtPythonPath.setToolTip(translations.TR_PROJECT_PATH_PER_LINE) grid.addWidget(self.txtPythonPath, 2, 1) # Additional builtins/globals for pyflakes grid.addWidget(QLabel(translations.TR_PROJECT_BUILTINS), 3, 0) self.additional_builtins = QLineEdit() self.additional_builtins.setText(' '.join( self._parent.project.additional_builtins)) self.additional_builtins.setToolTip( translations.TR_PROJECT_BUILTINS_TOOLTIP) grid.addWidget(self.additional_builtins, 3, 1) self.txtPreExec = QLineEdit() ui_tools.LineEditButton( self.txtPreExec, self.txtPreExec.clear, self.style().standardPixmap(self.style().SP_TrashIcon)) self.txtPreExec.setReadOnly(True) self.txtPreExec.setText(self._parent.project.pre_exec_script) self.txtPreExec.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'script.sh')) self.btnPreExec = QPushButton(QIcon(":img/open"), '') grid.addWidget(QLabel(translations.TR_PROJECT_PRE_EXEC), 4, 0) grid.addWidget(self.txtPreExec, 4, 1) grid.addWidget(self.btnPreExec, 4, 2) self.txtPostExec = QLineEdit() ui_tools.LineEditButton( self.txtPostExec, self.txtPostExec.clear, self.style().standardPixmap(self.style().SP_TrashIcon)) self.txtPostExec.setReadOnly(True) self.txtPostExec.setText(self._parent.project.post_exec_script) self.txtPostExec.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'script.sh')) self.btnPostExec = QPushButton(QIcon(":img/open"), '') grid.addWidget(QLabel(translations.TR_PROJECT_POST_EXEC), 5, 0) grid.addWidget(self.txtPostExec, 5, 1) grid.addWidget(self.btnPostExec, 5, 2) grid.addItem( QSpacerItem(5, 10, QSizePolicy.Expanding, QSizePolicy.Expanding), 6, 0) # Properties grid.addWidget(QLabel(translations.TR_PROJECT_PROPERTIES), 7, 0) self.txtParams = QLineEdit() self.txtParams.setToolTip(translations.TR_PROJECT_PARAMS_TOOLTIP) self.txtParams.setText(self._parent.project.program_params) self.txtParams.setPlaceholderText('verbose, debug, force') grid.addWidget(QLabel(translations.TR_PROJECT_PARAMS), 8, 0) grid.addWidget(self.txtParams, 8, 1) #Widgets for virtualenv properties self.txtVenvPath = QLineEdit() ui_tools.LineEditButton( self.txtVenvPath, self.txtVenvPath.clear, self.style().standardPixmap(self.style().SP_TrashIcon)) self.txtVenvPath.setText(self._parent.project.venv) self._dir_completer = QCompleter() self._dir_completer.setModel(QDirModel(self._dir_completer)) self.txtVenvPath.setCompleter(self._dir_completer) self.txtVenvPath.setPlaceholderText( os.path.join(os.path.expanduser("~"), 'path', 'to', 'virtualenv')) self.btnVenvPath = QPushButton(QIcon(":img/open"), '') grid.addWidget(QLabel(translations.TR_PROJECT_VIRTUALENV), 9, 0) grid.addWidget(self.txtVenvPath, 9, 1) grid.addWidget(self.btnVenvPath, 9, 2) self.btnBrowse.clicked['bool'].connect(self.select_file) self.btnPythonPath.clicked['bool'].connect(self._load_python_path) self.btnVenvPath.clicked['bool'].connect(self._load_python_venv) self.btnPreExec.clicked['bool'].connect(self.select_pre_exec_script) self.btnPostExec.clicked['bool'].connect(self.select_post_exec_script)
def __init__(self, new_project=True, project_manager: ProjectManager = None, parent=None): super().__init__(parent) if not new_project: assert project_manager is not None self.ui = Ui_ProjectDialog() self.ui.setupUi(self) self.setWindowFlags(Qt.Window) if new_project: self.participant_table_model = ParticipantTableModel([]) else: self.participant_table_model = ParticipantTableModel(project_manager.participants) self.ui.spinBoxSampleRate.setValue(project_manager.device_conf["sample_rate"]) self.ui.spinBoxFreq.setValue(project_manager.device_conf["frequency"]) self.ui.spinBoxBandwidth.setValue(project_manager.device_conf["bandwidth"]) self.ui.spinBoxGain.setValue(project_manager.device_conf.get("gain", config.DEFAULT_GAIN)) self.ui.txtEdDescription.setPlainText(project_manager.description) self.ui.lineEdit_Path.setText(project_manager.project_path) self.ui.lineEditBroadcastAddress.setText(project_manager.broadcast_address_hex) self.ui.btnSelectPath.hide() self.ui.lineEdit_Path.setDisabled(True) self.setWindowTitle("Edit project settings") self.ui.lNewProject.setText("Edit project") self.ui.tblParticipants.setModel(self.participant_table_model) self.participant_table_model.update() self.ui.lineEditBroadcastAddress.setValidator(QRegExpValidator(QRegExp("([a-fA-F ]|[0-9]){,}"))) self.sample_rate = self.ui.spinBoxSampleRate.value() self.freq = self.ui.spinBoxFreq.value() self.bandwidth = self.ui.spinBoxBandwidth.value() self.gain = self.ui.spinBoxGain.value() self.description = self.ui.txtEdDescription.toPlainText() self.broadcast_address_hex = self.ui.lineEditBroadcastAddress.text() self.path = self.ui.lineEdit_Path.text() self.new_project = new_project self.committed = False self.setModal(True) completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEdit_Path.setCompleter(completer) self.create_connects() # add two participants if self.participant_table_model.rowCount() == 0 and new_project: self.ui.btnAddParticipant.click() self.ui.btnAddParticipant.click() if new_project: self.ui.lineEdit_Path.setText(os.path.realpath(os.path.join(os.curdir, "new"))) self.on_line_edit_path_text_edited() try: self.restoreGeometry(constants.SETTINGS.value("{}/geometry".format(self.__class__.__name__))) except TypeError: pass
def __init__(self, installed_plugins, highlighted_plugins=None, parent=None): super().__init__(parent) self.backend_handler = BackendHandler() self.ui = Ui_DialogOptions() self.ui.setupUi(self) self.setAttribute(Qt.WA_DeleteOnClose) layout = QHBoxLayout(self.ui.tab_plugins) self.plugin_controller = PluginController(installed_plugins, highlighted_plugins, parent=self) layout.addWidget(self.plugin_controller) self.ui.tab_plugins.setLayout(layout) self.ui.labelWindowsError.setVisible(sys.platform == "win32" and platform.architecture()[0] != "64bit") self.ui.checkBoxAlignLabels.setChecked(constants.SETTINGS.value("align_labels", True, bool)) self.ui.checkBoxFallBackTheme.setChecked(constants.SETTINGS.value('use_fallback_theme', False, bool)) self.ui.checkBoxShowConfirmCloseDialog.setChecked(not constants.SETTINGS.value('not_show_close_dialog', False, bool)) self.ui.checkBoxHoldShiftToDrag.setChecked(constants.SETTINGS.value('hold_shift_to_drag', False, bool)) self.ui.checkBoxDefaultFuzzingPause.setChecked(constants.SETTINGS.value('use_default_fuzzing_pause', True, bool)) self.ui.doubleSpinBoxRAMThreshold.setValue(100*constants.SETTINGS.value('ram_threshold', 0.6, float)) self.ui.radioButtonGnuradioDirectory.setChecked(self.backend_handler.use_gnuradio_install_dir) self.ui.radioButtonPython2Interpreter.setChecked(not self.backend_handler.use_gnuradio_install_dir) if self.backend_handler.gnuradio_install_dir: self.ui.lineEditGnuradioDirectory.setText(self.backend_handler.gnuradio_install_dir) if self.backend_handler.python2_exe: self.ui.lineEditPython2Interpreter.setText(self.backend_handler.python2_exe) self.ui.doubleSpinBoxFuzzingPause.setValue(constants.SETTINGS.value("default_fuzzing_pause", 10**6, int)) self.ui.doubleSpinBoxFuzzingPause.setEnabled(constants.SETTINGS.value('use_default_fuzzing_pause', True, bool)) completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEditPython2Interpreter.setCompleter(completer) self.ui.lineEditGnuradioDirectory.setCompleter(completer) for dev_name in self.backend_handler.DEVICE_NAMES: self.ui.listWidgetDevices.addItem(dev_name) self.set_device_enabled_suffix() self.ui.listWidgetDevices.setCurrentRow(0) self.set_gnuradio_status() self.refresh_device_tab() self.create_connects() self.old_symbol_tresh = 10 self.old_show_pause_as_time = False self.field_type_table_model = FieldTypeTableModel([], parent=self) self.ui.tblLabeltypes.setModel(self.field_type_table_model) self.ui.tblLabeltypes.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.ui.tblLabeltypes.setItemDelegateForColumn(1, ComboBoxDelegate([f.name for f in FieldType.Function], return_index=False, parent=self)) self.ui.tblLabeltypes.setItemDelegateForColumn(2, ComboBoxDelegate(ProtocolLabel.DISPLAY_FORMATS, parent=self)) self.read_options() self.old_default_view = self.ui.comboBoxDefaultView.currentIndex()
def __init__(self, parent=None): super(MainWindow, self).__init__() QNetworkProxyFactory.setUseSystemConfiguration(True) self.statusBar().showMessage(__doc__ + get_nuitka_version()) self.setWindowTitle(__doc__.strip().capitalize()) self.setMinimumSize(480, 400) self.setMaximumSize(1024, 800) self.resize(self.minimumSize()) self.setWindowIcon(QIcon.fromTheme("python")) self.center() QShortcut("Ctrl+q", self, activated=lambda: self.close()) self.menuBar().addMenu("&File").addAction("Exit", lambda: self.close()) windowMenu = self.menuBar().addMenu("&Window") windowMenu.addAction("Minimize", lambda: self.showMinimized()) windowMenu.addAction("Maximize", lambda: self.showMaximized()) windowMenu.addAction("Restore", lambda: self.showNormal()) windowMenu.addAction("FullScreen", lambda: self.showFullScreen()) windowMenu.addAction("Center", lambda: self.center()) windowMenu.addAction("Top-Left", lambda: self.move(0, 0)) windowMenu.addAction("To Mouse", lambda: self.move_to_mouse_position()) windowMenu.addSeparator() windowMenu.addAction( "Increase size", lambda: self.resize(self.size().width() * 1.4, self.size().height() * 1.4)) windowMenu.addAction("Decrease size", lambda: self.resize( self.size().width() // 1.4, self.size().height() // 1.4)) windowMenu.addAction("Minimum size", lambda: self.resize(self.minimumSize())) windowMenu.addAction("Maximum size", lambda: self.resize(self.maximumSize())) windowMenu.addAction("Horizontal Wide", lambda: self.resize( self.maximumSize().width(), self.minimumSize().height())) windowMenu.addAction("Vertical Tall", lambda: self.resize( self.minimumSize().width(), self.maximumSize().height())) windowMenu.addSeparator() windowMenu.addAction("Disable Resize", lambda: self.setFixedSize(self.size())) windowMenu.addAction("Set Interface Font...", lambda: self.setFont(QFontDialog.getFont()[0])) windowMenu.addAction( "Load .qss Skin", lambda: self.setStyleSheet(self.skin())) helpMenu = self.menuBar().addMenu("&Help") helpMenu.addAction("About Qt 5", lambda: QMessageBox.aboutQt(self)) helpMenu.addAction("About Python 3", lambda: open_new_tab('https://www.python.org')) helpMenu.addAction("About " + __doc__, lambda: QMessageBox.about(self, __doc__, HELP)) helpMenu.addSeparator() helpMenu.addAction( "Keyboard Shortcut", lambda: QMessageBox.information(self, __doc__, "<b>Quit = CTRL+Q")) if sys.platform.startswith('linux'): helpMenu.addAction("View Source Code", lambda: call('xdg-open ' + __file__, shell=True)) helpMenu.addAction("View GitHub Repo", lambda: open_new_tab(__url__)) helpMenu.addAction("Check Updates", lambda: Downloader(self)) # process self.process = QProcess() self.process.readyReadStandardOutput.connect(self._read_output) self.process.readyReadStandardError.connect(self._read_errors) self.process.finished.connect(self._process_finished) self.process.error.connect(self._process_failed) # widgets self.group0, self.group1 = QGroupBox("Options"), QGroupBox("Paths") self.group4, self.group5 = QGroupBox("Details"), QGroupBox("Miscs") g0grid, g1vlay = QGridLayout(self.group0), QGridLayout(self.group1) g5vlay, g4vlay = QVBoxLayout(self.group5), QVBoxLayout(self.group4) # group 0 the options self.module = QCheckBox("Create compiled extension module") self.standalone = QCheckBox("Standalone executable binary output") self.nofreeze = QCheckBox("No freeze all modules of standard library") self.python_debug = QCheckBox("Use Python Debug") self.warning = QCheckBox("Warnings for implicit exceptions at compile") self.recurse_std = QCheckBox("Recursive compile the standard library") self.recurse_not = QCheckBox("Force No recursive compiling") self.execute = QCheckBox("Execute the created binary after compiling") self.pythonpath = QCheckBox("Keep pythonpath when executing") self.enhaced = QCheckBox("Enhaced compile, Not CPython compatible") self.nolineno = QCheckBox("No Statements line numbers on compile") self.rmbuilddir = QCheckBox("Remove build directory after compile.") self.nuitka_debug = QCheckBox("Use Nuitka Debug") self.keep_debug = QCheckBox("Keep debug info on compile for GDB") self.traced = QCheckBox("Traced execution output") self.plusplus = QCheckBox("Compile C++ Only on generated source files") self.experimental = QCheckBox("Experimental features") self.force_clang = QCheckBox("Force use of CLang") self.force_mingw = QCheckBox("Force use of MinGW on MS Windows") self.force_lto = QCheckBox("Use link time optimizations LTO") self.show_scons = QCheckBox("Show Scons executed commands") self.show_progress = QCheckBox("Show progress info and statistics") self.show_summary = QCheckBox("Show final summary of included modules") self.disable_console = QCheckBox("Disable the Console on MS Windows") for i, widget in enumerate(( self.module, self.standalone, self.nofreeze, self.python_debug, self.warning, self.recurse_std, self.recurse_not, self.execute, self.pythonpath, self.enhaced, self.nolineno, self.rmbuilddir, self.nuitka_debug, self.keep_debug, self.traced, self.plusplus, self.experimental, self.force_clang, self.force_mingw, self.force_lto, self.show_scons, self.show_progress, self.show_summary, self.disable_console)): widget.setToolTip(widget.text()) g0grid.addWidget(widget, i if i < i + 1 else i - (i - 1), i % 2) # group 1 paths self.target = QLineEdit() self.outdir = QLineEdit(os.path.expanduser("~")) self.t_icon = QLineEdit() self.target.setToolTip("Python App file you want to Compile to Binary") self.outdir.setToolTip("Folder to write Compiled Output Binary files") self.t_icon.setToolTip("Icon image file to embed for your Python App") self.target.setPlaceholderText("/full/path/to/target/python_app.py") self.outdir.setPlaceholderText("/full/path/to/output/folder/") self.t_icon.setPlaceholderText("/full/path/to/python_app/icon.png") self.completer, self.dirs = QCompleter(self), QDirModel(self) self.completer.setModel(self.dirs) self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setCompletionMode(QCompleter.PopupCompletion) self.completer.popup().setStyleSheet("border: 1px solid gray") self.completer.popup().setVerticalScrollBarPolicy( Qt.ScrollBarAlwaysOff) self.outdir.setCompleter(self.completer) self.t_icon.setCompleter(self.completer) self.target.setCompleter(self.completer) self.clear_1 = QPushButton(QIcon.fromTheme("edit-clear"), "", self, clicked=lambda: self.target.clear()) self.clear_2 = QPushButton(QIcon.fromTheme("edit-clear"), "", self, clicked=lambda: self.t_icon.clear()) self.clear_3 = QPushButton(QIcon.fromTheme("edit-clear"), "", self, clicked=lambda: self.outdir.clear()) self.open_1 = QPushButton( QIcon.fromTheme("folder-open"), "", self, clicked=lambda: self.target.setText(str(QFileDialog.getOpenFileName( self, __doc__, os.path.expanduser("~"), """Python (*.py);; Python for Windows (*.pyw);;All (*.*)""")[0]))) self.open_2 = QPushButton( QIcon.fromTheme("folder-open"), "", self, clicked=lambda: self.t_icon.setText(str(QFileDialog.getOpenFileName( self, __doc__, os.path.expanduser("~"), "PNG (*.png);;JPG (*.jpg);;ICO (*.ico);;All (*.*)")[0]))) self.open_3 = QPushButton( QIcon.fromTheme("folder-open"), "", self, clicked=lambda: self.outdir.setText(str(QFileDialog.getExistingDirectory( self, __doc__, os.path.expanduser("~"))))) self.l_icon = QLabel("Target Icon") g1vlay.addWidget(QLabel("<b>Target Python"), 0, 0) g1vlay.addWidget(self.target, 0, 1) g1vlay.addWidget(self.clear_1, 0, 2) g1vlay.addWidget(self.open_1, 0, 3) g1vlay.addWidget(self.l_icon, 1, 0) g1vlay.addWidget(self.t_icon, 1, 1) g1vlay.addWidget(self.clear_2, 1, 2) g1vlay.addWidget(self.open_2, 1, 3) g1vlay.addWidget(QLabel("<b>Output Folder"), 2, 0) g1vlay.addWidget(self.outdir, 2, 1) g1vlay.addWidget(self.clear_3, 2, 2) g1vlay.addWidget(self.open_3, 2, 3) # group 4 the dome view mode self.jobs = QSpinBox() self.jobs.setRange(1, cpu_count()) self.jobs.setValue(cpu_count()) self.jobs.setToolTip("Backend Worker Jobs Processes") self.python_version = QComboBox() self.python_version.addItems(["2.7", "3.2", "3.3", "3.4"]) self.python_version.setToolTip("Python version to use with Nuitka") self.display_tree = QPushButton("Display Tree") self.display_tree.clicked.connect( lambda: call(NUITKA + " --display-tree {}".format( self.target.text()), shell=True)) self.dump_tree = QPushButton( "View Docs", clicked=lambda: open_new_tab("http://nuitka.net/doc/user-manual.html")) self.open_log = QPushButton("View Logs") _log = os.path.join(gettempdir(), "nuitka-gui.log") _open = "xdg-open " if sys.platform.startswith("lin") else "open " self.open_log.clicked.connect(lambda: call(_open + _log, shell=True)) self.open_folder = QPushButton("Open Build Folder") self.open_folder.clicked.connect(lambda: call( _open + str(self.outdir.text()).strip(), shell=True)) # self.display_tree.clicked.connect(self._display_tree) g4vlay.addWidget(QLabel("<b>Worker Jobs")) g4vlay.addWidget(self.jobs) g4vlay.addWidget(QLabel("<b>Python Version")) g4vlay.addWidget(self.python_version) g4vlay.addWidget(QLabel("<b>Actions")) g4vlay.addWidget(self.display_tree) g4vlay.addWidget(self.dump_tree) g4vlay.addWidget(self.open_log) g4vlay.addWidget(self.open_folder) self.debug, self.scr = QCheckBox("Use Debug"), QCheckBox("Make Script") self.chrt, self.ionice = QCheckBox("Slow CPU"), QCheckBox("Slow HDD") self.minimi = QCheckBox("Auto Minimize") self.chrt.setToolTip("Use Low CPU speed priority (Linux only)") self.ionice.setToolTip("Use Low HDD speed priority (Linux only)") self.scr.setToolTip("Generate a Bash Script to Compile with Nuitka") self.debug.setToolTip("Use Debug Verbose mode") self.minimi.setToolTip("Automatically Minimize when compiling starts") self.scr.setChecked(True) self.chrt.setChecked(True) self.ionice.setChecked(True) self.minimi.setChecked(True) g5vlay.addWidget(self.debug) g5vlay.addWidget(self.scr) g5vlay.addWidget(self.chrt) g5vlay.addWidget(self.ionice) g5vlay.addWidget(self.minimi) self.guimode = QComboBox() self.guimode.addItems(('Full UX / UI', 'Simple UX / UI')) self.guimode.setCurrentIndex(1) self._set_guimode() self.guimode.setStyleSheet("""QComboBox{background:transparent; margin-left:25px;color:gray;text-decoration:underline;border:0}""") self.guimode.currentIndexChanged.connect(self._set_guimode) self.bt = QDialogButtonBox(self) self.bt.setStandardButtons( QDialogButtonBox.Ok | QDialogButtonBox.Close) self.bt.rejected.connect(self.close) self.bt.accepted.connect(self.run) if not sys.platform.startswith('lin'): self.scr.setChecked(False) self.chrt.setChecked(False) self.ionice.setChecked(False) self.scr.hide() self.chrt.hide() self.ionice.hide() if not sys.platform.startswith('win'): self.l_icon.hide() self.t_icon.hide() self.clear_2.hide() self.open_2.hide() if sys.platform.startswith('win'): self.display_tree.hide() container = QWidget() container_layout = QGridLayout(container) # Y, X container_layout.addWidget(self.guimode, 0, 1) container_layout.addWidget(self.group0, 1, 1) container_layout.addWidget(self.group1, 2, 1) container_layout.addWidget(self.group4, 1, 2) container_layout.addWidget(self.group5, 2, 2) container_layout.addWidget(self.bt, 3, 1) self.setCentralWidget(container)
def __init__(self, new_project=True, project_manager: ProjectManager = None, parent=None): super().__init__(parent) if not new_project: assert project_manager is not None self.ui = Ui_ProjectDialog() self.ui.setupUi(self) if new_project: self.participant_table_model = self.ProtocolParticipantModel([]) else: self.participant_table_model = self.ProtocolParticipantModel( project_manager.participants) self.ui.spinBoxSampleRate.setValue( project_manager.device_conf["sample_rate"]) self.ui.spinBoxFreq.setValue( project_manager.device_conf["frequency"]) self.ui.spinBoxBandwidth.setValue( project_manager.device_conf["bandwidth"]) self.ui.spinBoxGain.setValue(project_manager.device_conf["gain"]) self.ui.txtEdDescription.setPlainText(project_manager.description) self.ui.lineEdit_Path.setText(project_manager.project_path) self.ui.lineEditBroadcastAddress.setText( project_manager.broadcast_address_hex) self.ui.btnSelectPath.hide() self.ui.lineEdit_Path.setDisabled(True) self.setWindowTitle("Edit project settings") self.ui.lNewProject.setText("Edit project") self.ui.btnOK.setText("Accept") self.ui.tblParticipants.setModel(self.participant_table_model) self.ui.tblParticipants.setItemDelegateForColumn( 2, ComboBoxDelegate([""] * len(constants.PARTICIPANT_COLORS), colors=constants.PARTICIPANT_COLORS, parent=self)) self.__set_relative_rssi_delegate() "(([a-fA-F]|[0-9]){2}){3}" self.ui.lineEditBroadcastAddress.setValidator( QRegExpValidator(QRegExp("([a-fA-F ]|[0-9]){,}"))) self.sample_rate = self.ui.spinBoxSampleRate.value() self.freq = self.ui.spinBoxFreq.value() self.bandwidth = self.ui.spinBoxBandwidth.value() self.gain = self.ui.spinBoxGain.value() self.description = self.ui.txtEdDescription.toPlainText() self.broadcast_address_hex = self.ui.lineEditBroadcastAddress.text() self.ui.btnRemoveParticipant.setDisabled(len(self.participants) <= 1) self.path = self.ui.lineEdit_Path.text() self.new_project = new_project self.committed = False self.setModal(True) completer = QCompleter() completer.setModel(QDirModel(completer)) self.ui.lineEdit_Path.setCompleter(completer) self.create_connects() if new_project: self.ui.lineEdit_Path.setText( os.path.realpath(os.path.join(os.curdir, "new"))) self.on_line_edit_path_text_edited() self.open_editors() try: self.restoreGeometry( constants.SETTINGS.value("{}/geometry".format( self.__class__.__name__))) except TypeError: pass
def __init__(self, parent=None): super(MyMainWindow, self).__init__(parent) self.setupUi(self) self.resize(1200, 740) # 默认的状态栏 self.status = self.statusBar() self.status.showMessage("你在主页面~") # 标题栏 self.setWindowTitle("建模协会录入信息") # 窗口居中 self.center() # 退出窗口 self.quit_btn.clicked.connect(self.quit_act) # table view 更像是之可以查看的视图 self.model = QStandardItemModel(4, 3) # 绑定了数据模型 self.model.setHorizontalHeaderLabels(['标题1', '标题2', '标题3']) for row in range(1, 5): for col in range(1, 4): item = QStandardItem(str(row) + str(col)) # 设置单元格文本颜色 item.setForeground(QBrush(QColor(144, 182, 240))) # 设置单元格字体 不如在designer里面设置 # 设置单元格 水平竖直居中对齐 item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.model.setItem(row - 1, col - 1, item) item = QStandardItem("美国大学生数学建模竞赛") item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) item.setForeground(QBrush(QColor(144, 182, 240))) self.model.setItem(0, 0, item) # 视图仅进行观察,不可修改 tableview可用的,tablewidget也可以用 self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) # 视图整行选中 self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) # 填充满整个窗口, 标题过长会被遮挡 # self.tableView.horizontalHeader().setStretchLastSection(True) # self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.tableView.setModel(self.model) # 表格的高度宽度与内容相匹配, 与填充满相矛盾 self.tableView.resizeColumnsToContents() self.tableView.resizeRowsToContents() # 设置单元格大小 self.tableView.setColumnWidth(0, 300) # 第零列的宽度 self.tableView.setColumnWidth(1, 150) # 第一列的宽度 self.tableView.setColumnWidth(2, 150) # 第一列的宽度 self.tableView.setRowHeight(0, 50) # 第一行的高度 # 合并单元格 # 绑定了数据模型 self.model = QStandardItemModel(4, 3) self.model.setHorizontalHeaderLabels(['标题1', '标题2', '标题3']) self.tableView_2.setModel(self.model) # 0, 0 表示起始单元格 1, 2 表示1行两列 self.tableView_2.setSpan(0, 0, 1, 2) self.tableView_2.setSpan(1, 1, 2, 1) self.model.setItem(0, 0, QStandardItem("0")) self.model.setItem(1, 1, QStandardItem("1")) self.model.setItem(2, 1, QStandardItem("2")) # 不存在 self.model.setItem(2, 2, QStandardItem("3")) self.tableView_2.setModel(self.model) # 不显示垂直表头 self.tableView.verticalHeader().setVisible(False) # listview slm = QStringListModel() self.qlist = ['标题1', '标题2', '标题3'] slm.setStringList(self.qlist) self.listView.setModel(slm) self.listView.clicked.connect(self.clicked_) # QTableWidget self.tableWidget.setRowCount(8) self.tableWidget.setColumnCount(5) self.tableWidget.setHorizontalHeaderLabels( ['队员1', '队员2', '队员3', '比赛名称', '比赛级别']) self.tableWidget.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) # 表头自适应伸缩 ls = [] for i in range(8): a = str(i + 1) ls.append(a) self.tableWidget.setVerticalHeaderLabels(ls) for row in range(1, 8): for col in range(1, 5): item = QTableWidgetItem(str(row) + str(col)) # 设置单元格文本颜色 item.setForeground(QBrush(QColor(144, 182, 240))) # 设置单元格字体 不如在designer里面设置 self.tableWidget.setItem(row - 1, col - 1, item) # 放置控件 combox = QComboBox() combox.addItem("男") combox.addItem("女") self.tableWidget.setCellWidget(0, 1, combox) # 设置单元格排序方式(视图不能排序) self.pushButton.clicked.connect(self.sort_ascend) self.pushButton_2.clicked.connect(self.sort_decend) # 右键支持菜单选项 self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu) self.tableWidget.customContextMenuRequested.connect(self.table_menu) # TreeView # view是父类,widget是子类 self.treeWidget.setColumnCount(3) # 三列 designer 里面设计 self.treeWidget.setHeaderLabels(['人员', '比赛情况', '获奖级别']) # 设置标题 # 设置根节点 root = QTreeWidgetItem(self.treeWidget) root.setText(0, "比赛人员") # 0 表示位置 self.treeWidget.setColumnWidth(1, 200) # 设置宽度 # 设置子节点 child_16 = QTreeWidgetItem(root) child_16.setText(0, "16级") child_ljw = QTreeWidgetItem(child_16) child_ljw.setText(0, "刘佳玮") child_ljw.setText(1, "美国大学生数学建模竞赛") child_ljw.setText(2, "一等奖") # 设置节点的背景颜色 root.setBackground(0, QBrush((QColor(144, 182, 240)))) root.setBackground(1, QBrush((QColor(144, 214, 240)))) root.setBackground(2, QBrush((QColor(144, 235, 240)))) # 节点响应事件 self.treeWidget.clicked.connect(self.treeclick) # 定制系统模式 model = QDirModel() self.treeView.setModel(model)
from PyQt5.QtWidgets import (QSplitter,QListView,QTreeView,QTableView,QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit, QFrame, QDirModel) from PyQt5.QtGui import QFont, QIcon,QColor,QKeySequence,QSyntaxHighlighter,QTextCharFormat,QTextCursor from PyQt5.QtGui import QPalette, QPixmap, QColor from PyQt5 import QtCore import math #QTextCodec.setCodecForTr(QTextCodec.codecForName("utf-8")) if __name__ == '__main__': import sys app = QApplication(sys.argv) model = QDirModel() #selModel =QItemSelectionModel(model); mylist = QListView() mytree = QTreeView() mytable = QTableView() mytree.setModel(model) mylist.setModel(model) mytable.setModel(model) #mytree.setSelectionModel(selModel) #mylist.setSelectionModel(mytree.selectionModel()) #mytable.setSelectionModel(mytree.selectionModel()) #QObject.connectNotify
def setupTab6(self, tab): """Advance widgets for preview panel""" container = QHBoxLayout() scrollArea = QScrollArea() scrollArea.setWidgetResizable(True) w = QWidget() w.setMinimumSize(QSize(400, 500)) layout = QVBoxLayout() w.setLayout(layout) scrollArea.setWidget(w) container.addWidget(scrollArea) tab.setLayout(container) # List lay = QHBoxLayout() layout.addLayout(lay) list1 = QListWidget() list1.addItems(["aaa", "bbb", "ccc"]) list2 = QListWidget() list2.addItem( QListWidgetItem(QIcon(":appres.img/Flag_blueHS.png"), "blue")) list2.addItem( QListWidgetItem(QIcon(":appres.img/Flag_redHS.png"), "red")) list2.addItem( QListWidgetItem(QIcon(":appres.img/Flag_greenHS.png"), "green")) list2.setViewMode(QListWidget.IconMode) lay.addWidget(list1) lay.addWidget(list2) # Table lay = QHBoxLayout() layout.addLayout(lay) t1 = QTableWidget() t1.setRowCount(3) t1.setColumnCount(3) for i in range(3): for j in range(3): t1.setItem(i, j, QTableWidgetItem(str((i + 1) * (j + 1)))) t1.item(i, j).setTextAlignment(Qt.AlignCenter) t1.setColumnWidth(0, 50) t1.setColumnWidth(1, 50) t1.setColumnWidth(2, 50) t1.setEditTriggers(QTableWidget.AllEditTriggers) t2 = QTableWidget() t2.setRowCount(3) t2.setColumnCount(3) t2.setHorizontalHeaderLabels(["Name", "Gender", "Age"]) t2.setVerticalHeaderLabels(["1st", "2rd", "3th"]) t2.setItem(0, 0, QTableWidgetItem("july")) c = QComboBox() c.addItems(["Male", "Famale"]) t2.setCellWidget(0, 1, c) t2.cellWidget(0, 1).setCurrentIndex(1) t2.setItem(0, 2, QTableWidgetItem("10")) t2.setItem(1, 0, QTableWidgetItem("john")) c = QComboBox() c.addItems(["Male", "Famale"]) c.setEditable(True) t2.setCellWidget(1, 1, c) t2.setItem(1, 2, QTableWidgetItem("11")) t2.resizeColumnsToContents() t2.setEditTriggers(QTableWidget.EditKeyPressed | QTableWidget.SelectedClicked | QTableWidget.AnyKeyPressed | QTableWidget.DoubleClicked) lay.addWidget(t1) lay.addWidget(t2) # Tree lay = QHBoxLayout() layout.addLayout(lay) tree1 = QTreeWidget() tree1.setColumnCount(2) tree1.setHeaderLabels(["Key", "Value"]) node1 = QTreeWidgetItem() node1.setText(0, "root") node1.setText(1, "0") node1.setIcon(0, QIcon(":appres.img/home.png")) tree1.addTopLevelItem(node1) node11 = QTreeWidgetItem() node11.setText(0, "child1") icon = QIcon(":appres.img/book_angle.png") icon.addPixmap(QPixmap(":appres.img/book_open.png"), QIcon.Normal, QIcon.On) node11.setIcon(0, icon) nodea = QTreeWidgetItem() nodea.setText(0, "red") nodea.setBackground(1, QBrush(Qt.red)) nodeb = QTreeWidgetItem() nodeb.setText(0, "gray") nodeb.setBackground(1, QBrush(Qt.gray)) nodec = QTreeWidgetItem() nodec.setText(0, "green") nodec.setBackground(1, QBrush(Qt.green)) node11.addChildren([nodea, nodeb, nodec]) node12 = QTreeWidgetItem() node12.setText(0, "child2") node12.setText(1, "child2") node13 = QTreeWidgetItem() node13.setText(0, "child3") node13.setText(1, "child3") node12.setIcon(0, icon) node13.setIcon(0, icon) node1.addChild(node11) node1.addChild(node12) node1.addChild(node13) tree1.expand(tree1.model().index(0, 0)) tree1.expandItem(node11) tree2 = QTreeView() folder = QDirModel() tree2.setModel(folder) lay.addWidget(tree1) lay.addWidget(tree2)
def __init__(self): super(MyApp, self).__init__() loadUi("ui/main_window.ui", self) self.setWindowTitle("Openpose GUI") self.setWindowIcon(QIcon('media/logo.png')) self.params = { # "net_resolution": "128x96", # uncomment if cuda error "model_folder": "models/", "body": 1, "render_pose": 0, "render_threshold": 0.1, "hand": False, "hand_render": 1, "hand_render_threshold": 0.2, "face": False, "face_render": 1, "face_render_threshold": 0.4, "disable_blending": False # black blackgroud if True } self.datum = op.Datum() self.op_wrapper = op.WrapperPython() self.tree_model = QDirModel() self.fourcc = cv2.VideoWriter_fourcc(*'XVID') self.cap = cv2.VideoCapture() self.save_window = SaveWindow() self.timer = QTimer() self.timer.timeout.connect(self.show_frame) self.out_path = "output" self.out_img_path = os.path.join(self.out_path, "{}/img") self.out_body_path = os.path.join(self.out_path, "{}/keypoint_body") self.out_hand_path = os.path.join(self.out_path, "{}/keypoint_hand") self.out_face_path = os.path.join(self.out_path, "{}/keypoint_face") self.webcam_open = False self.is_writing = False self.is_gesture_recognition = False self.timestamp = "" self.start_time = 0 self.count = 0 self.gesture_model = self.get_gesture_model( "models/gesture/[email protected]") self.idx_to_gesture = { 0: 'eight', 1: 'five', 2: 'handssors', 3: 'normal', 4: 'ten' } # {'eight': 0, 'five': 1, 'handssors': 2, 'normal': 3} self.gesture_threshold = 0.57 self.init_openpose() self.init_checkbox() self.init_pushbutton() self.init_radiobutton() self.init_slider() self.init_treeview() self.init_others()