def main(): app = QApplication(sys.argv) cache_size_in_kb = 700 * 10**3 QPixmapCache.setCacheLimit(cache_size_in_kb) app.setWindowIcon(QIcon(":/icons/app.svg")) f = QFile(":/style.qss") f.open(QFile.ReadOnly | QFile.Text) app.setStyleSheet(QTextStream(f).readAll()) f.close() mw = MainWindow() mw.show() sys.exit(app.exec_())
def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return False instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.document().contentsChanged.connect(self.documentWasModified) return True
def setDarkTheme(boolean): if boolean: qss = '' ColorTheme.SELECTED = ColorTheme.DARK Settings.setValue(Settings.COLORTHEME, 'darkorange') # noinspection PyBroadException try: qfile = QFile(':qss/darkorange.qss') if qfile.open(QIODevice.ReadOnly | QIODevice.Text): qss = str(qfile.readAll()) qfile.close() except: qss = '' pass QtWidgets.QApplication.setStyle(ColorTheme.originalStyle) QtWidgets.QApplication.setPalette(ColorTheme.originalPalette) QtWidgets.QApplication.instance().setStyleSheet(qss)
def get_style(style_sheet): try: mod = importlib.import_module("." + style_sheet, __name__) hasattr(mod, "qt_resource_name") f = QFile(":/%s/style.qss" % style_sheet) f.open(QFile.ReadOnly | QFile.Text) ts = QTextStream(f) stylesheet = ts.readAll() except ImportError as e: print ("Style sheet not available. Use available_styles() to check for valid styles") return u"" except Exception as e: print ("Style sheet available, but an error occured...") traceback.print_exc() return u"" return stylesheet
def open_map_image(self, filename = None): """ Taken from PyQt5 svgviewer.py example (see license.txt) """ if not filename: filename, _ = QFileDialog.getOpenFileName(self, "Open SVG File", self.currentPath, "SVG files (*.svg *.svgz *.svg.gz)") if filename: svg_file = QFile(filename) if not svg_file.exists(): QMessageBox.critical(self, "Open SVG File", "Could not open file '{}'".format(filename)) else: self.view.openFile(svg_file) self.resize(self.view.sizeHint() + QSize(80, 80 + self.menuBar().height()))
def showFiles(self, files): for fn in files: file = QFile(self.currentDir.absoluteFilePath(fn)) size = QFileInfo(file).size() fileNameItem = QTableWidgetItem(fn) fileNameItem.setFlags(fileNameItem.flags() ^ Qt.ItemIsEditable) sizeItem = QTableWidgetItem("%d KB" % (int((size + 1023) / 1024))) sizeItem.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight) sizeItem.setFlags(sizeItem.flags() ^ Qt.ItemIsEditable) row = self.filesTable.rowCount() self.filesTable.insertRow(row) self.filesTable.setItem(row, 0, fileNameItem) self.filesTable.setItem(row, 1, sizeItem) self.filesFoundLabel.setText("%d file(s) found (Double click on a file to open it)" % len(files))
def read_xml_file(self, xml, tag): try: xml_file = QFile(os.path.join(os.curdir, 'in', xml)) xml_file.open(xml_file.ReadOnly | xml_file.Text) doc = QXmlStreamReader(xml_file) text_list = [] while not doc.atEnd(): doc.readNextStartElement() if doc.name() == tag: temp = doc.namespaceUri() text_list.append( '{0}, {1}, {2}'.format(doc.namespaceUri(), doc.qualifiedName(), doc.readElementText())) xml_file.close() return text_list finally: xml_file.close()
def __saveByStream(self, fileName): ##用 QTextStream 保存文件 fileDevice = QFile(fileName) if not fileDevice.open(QIODevice.WriteOnly | QIODevice.Text): return False try: fileStream = QTextStream(fileDevice) #用文本流读取文件 fileStream.setAutoDetectUnicode(True) #自动检测Unicode fileStream.setCodec("utf-8") #必须设置编码,否则不能正常显示汉字 text = self.ui.textEdit.toPlainText() #返回是str类型 fileStream << text #使用流操作符 ## fileStream<<"\n***************在尾部添加的第1行" finally: fileDevice.close() return True
def inject_js(filepath, ipoint=QWebEngineScript.DocumentCreation, iid=QWebEngineScript.ApplicationWorld, sub_frames=False, script_transform=None): f = QFile(filepath) assert f.open(QFile.ReadOnly | QFile.Text) src = QTextStream(f).readAll() if script_transform: src = script_transform(src) script = QWebEngineScript() script.setInjectionPoint(ipoint) script.setSourceCode(src) script.setWorldId(iid) script.setRunsOnSubFrames(sub_frames) self.q_profile.scripts().insert(script)
def update_project(file_name="test.xml"): # 打开文件 file = QFile(file_name) # 相对路径、绝对路径、资源路径都可以 if not file.open(QFile.ReadOnly): return # 更新一个标签项, 如果知道xml的结构,直接定位到那个标签上定点更新 # 或者用遍历的方法去匹配tagname或者attribut,value来更新 doc = QDomDocument() if not doc.setContent(file): file.close() return file.close() root_item_list = project_item_dict.keys() for root_item in root_item_list: logging.debug(root_item) # general,generate_what root_element: QDomElement = doc.documentElement() dom_list: QDomNodeList = root_element.elementsByTagName(root_item) if dom_list.length() != 1: # 必然存在一个,且只有一个 logging.debug("解析出错") else: node: QDomNode = dom_list.item(0) root_e = node.toElement() # general level for cmd_key in project_item_dict[root_item].keys(): # dist_path_cmd , one_dir_cmd,level logging.debug("tag " + str(project_item_dict[root_item][cmd_key][2])) old_node: QDomElement = root_e.firstChildElement(project_item_dict[root_item][cmd_key][2]) if old_node.isNull(): logging.debug("parse error, no tag") new_node: QDomElement = root_e.firstChildElement(project_item_dict[root_item][cmd_key][2]) new_node.setAttribute("cmd", cmd_key) new_node.setAttribute("argv", project_item_dict[root_item][cmd_key][0]) new_node.setAttribute("state", project_item_dict[root_item][cmd_key][1]) if root_e.replaceChild(new_node, old_node) is None: logging.debug("replace failure") if not file.open(QFile.WriteOnly | QFile.Truncate): return # 输出到文件 out_stream = QTextStream(file) doc.save(out_stream, 4) # 缩进4格 file.close() logging.debug("configure is updated") return doc
def on_openButton_clicked(self): if PATH.IS_SCREEN: DIR = PATH.SCREENDIR else: DIR = PATH.PANELDIR dialog = QFileDialog(self) options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog dialog.setOptions(options) dialog.setDirectory(DIR) dialog.setFileMode(QFileDialog.ExistingFile) dialog.setNameFilter("style files (*.qss *.style);;All files (*.*)") dialog.setWindowTitle('Open StyleSheet') # sidebar links urls = [] urls.append(QUrl.fromLocalFile(os.path.expanduser('~'))) urls.append(QUrl.fromLocalFile(DIR)) local = os.path.join(os.getcwd(), 'qtvcp/screens', PATH.BASENAME) if os.path.exists(local): urls.append( QUrl.fromLocalFile( os.path.join(os.getcwd(), 'qtvcp/screens', PATH.BASENAME))) dialog.setSidebarUrls(urls) result = dialog.exec_() if result: fileName = dialog.selectedFiles()[0] file = QFile(fileName) file.open(QFile.ReadOnly) styleSheet = file.readAll() if sys.version_info.major > 2: styleSheet = str(styleSheet, encoding='utf8') else: # Python v2. styleSheet = unicode(styleSheet, encoding='utf8') self.styleTextView.setPlainText(styleSheet) model = self.styleSheetCombo.model() item = QtGui.QStandardItem(os.path.basename(fileName)) item.setData(fileName, role=QtCore.Qt.UserRole + 1) model.appendRow(item) self.styleSheetCombo.setCurrentIndex(self.styleSheetCombo.count() - 1)
def __saveImage(self): """ Private slot to save the selected image to disk. """ act = self.sender() index = act.data() itm = self.imagesTree.topLevelItem(index) if itm is None: return imageUrl = QUrl(itm.text(1)) if not imageUrl.host(): imageUrl.setHost(QUrl(self.siteAddressLabel.text()).host()) imageUrl.setScheme(QUrl(self.siteAddressLabel.text()).scheme()) import Helpviewer.HelpWindow cache = Helpviewer.HelpWindow.HelpWindow.networkAccessManager().cache() if cache: cacheData = cache.data(imageUrl) else: cacheData = None if not cacheData: E5MessageBox.critical(self, self.tr("Save Image"), self.tr("""This image is not available.""")) return downloadDirectory = Helpviewer.HelpWindow.HelpWindow\ .downloadManager().downloadDirectory() fn = os.path.join(downloadDirectory, os.path.basename(itm.text(1))) filename = E5FileDialog.getSaveFileName( self, self.tr("Save Image"), fn, self.tr("All Files (*)"), E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) if not filename: return f = QFile(filename) if not f.open(QFile.WriteOnly): E5MessageBox.critical( self, self.tr("Save Image"), self.tr("""<p>Cannot write to file <b>{0}</b>.</p>""").format( filename)) return f.write(cacheData.readAll()) f.close()
def __populateList(self): """ Private method to populate the list of available plugins. """ self.repositoryList.clear() self.__stableItem = None self.__unstableItem = None self.__unknownItem = None self.downloadProgress.setValue(0) self.__doneMethod = None if os.path.exists(self.pluginRepositoryFile): self.__repositoryMissing = False f = QFile(self.pluginRepositoryFile) if f.open(QIODevice.ReadOnly): from E5XML.PluginRepositoryReader import PluginRepositoryReader reader = PluginRepositoryReader(f, self.addEntry) reader.readXML() self.repositoryList.resizeColumnToContents(0) self.repositoryList.resizeColumnToContents(1) self.repositoryList.resizeColumnToContents(2) self.__resortRepositoryList() url = Preferences.getUI("PluginRepositoryUrl6") if url != self.repositoryUrlEdit.text(): self.repositoryUrlEdit.setText(url) E5MessageBox.warning( self, self.tr("Plugins Repository URL Changed"), self.tr( """The URL of the Plugins Repository has""" """ changed. Select the "Update" button to get""" """ the new repository file.""")) else: E5MessageBox.critical( self, self.tr("Read plugins repository file"), self.tr("<p>The plugins repository file <b>{0}</b> " "could not be read. Select Update</p>").format( self.pluginRepositoryFile)) else: self.__repositoryMissing = True QTreeWidgetItem(self.repositoryList, [ "", self.tr("No plugin repository file available.\nSelect Update.") ]) self.repositoryList.resizeColumnToContents(1)
def __exportCertificate(self, name, cert): """ Private slot to export a certificate. @param name default file name without extension (string) @param cert certificate to be exported (QSslCertificate) """ if cert is not None: fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( self, self.tr("Export Certificate"), name, self.tr("Certificate File (PEM) (*.pem);;" "Certificate File (DER) (*.der)"), None, E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) if fname: ext = QFileInfo(fname).suffix() if not ext or ext not in ["pem", "der"]: ex = selectedFilter.split("(*")[1].split(")")[0] if ex: fname += ex if QFileInfo(fname).exists(): res = E5MessageBox.yesNo( self, self.tr("Export Certificate"), self.tr("<p>The file <b>{0}</b> already exists." " Overwrite it?</p>").format(fname), icon=E5MessageBox.Warning) if not res: return f = QFile(fname) if not f.open(QIODevice.WriteOnly): E5MessageBox.critical( self, self.tr("Export Certificate"), self.tr("""<p>The certificate could not be written""" """ to file <b>{0}</b></p><p>Error: {1}</p>""" ).format(fname, f.errorString())) return if fname.endswith(".pem"): crt = cert.toPem() else: crt = cert.toDer() f.write(crt) f.close()
def save(self): filename, _ = QFileDialog.getSaveFileName(self, "Choose a file name", '.', "HTML (*.html *.htm)") if not filename: return file = QFile(filename) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Dock Widgets", "Cannot write file %s:\n%s." % (filename, file.errorString())) return out = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) out << self.textEdit.toHtml() QApplication.restoreOverrideCursor() self.statusBar().showMessage("Saved '%s'" % filename, 2000)
def load(self): exception = None fh = None try: fh = QFile(self.filename) if not fh.open(QIODevice.ReadOnly): raise IOError(str(fh.errorString())) stream = QTextStream(fh) stream.setCodec("UTF-8") self.setPlainText(stream.readAll()) self.document().setModified(False) except EnvironmentError as e: exception = e finally: if fh is not None: fh.close() if exception is not None: raise exception
def restoreLayout(self): if os.path.isfile(get_config_path("UILayout.dat")): try: f = open(get_config_path("UILayout.dat"), 'rb') geometry, state = pickle.load(f) self.restoreGeometry(geometry) self.restoreState(state) except Exception as e: print("Exception on restoreLayout, {}".format(e)) else: try: f = QFile(':/default_layout_qt5.dat') f.open(QIODevice.ReadOnly) geometry, state = pickle.loads(f.readAll()) self.restoreGeometry(geometry) self.restoreState(state) except Exception as e: print("Exception on restoreLayout, {}".format(e))
def deleteFile(self): index = self.selectionModel().currentIndex() path = self.model.filePath(index) if path: fileInfo = QFileInfo(path) if fileInfo.isFile(): if not self.ask_dialog( "Do you wan't to delete the selected file?"): return file = QFile(path) file.remove() elif fileInfo.isDir(): if not self.ask_dialog( "Do you wan't to delete the selected directory?"): return directory = QDir(path) directory.removeRecursively()
def __initWidget(self): """ 初始化小部件 """ # 设置布局 self.hBox.addWidget(self.indicator) self.hBox.addWidget(self.label) self.hBox.setSpacing(self.__spacing) self.hBox.setAlignment(Qt.AlignLeft) self.setAttribute(Qt.WA_StyledBackground) self.hBox.setContentsMargins(0, 0, 0, 0) # 设置默认样式 f = QFile(':/qss/switch_button.qss') f.open(QFile.ReadOnly) self.setStyleSheet(str(f.readAll(), encoding='utf-8')) f.close() # 信号连接到槽 self.indicator.checkedChanged.connect(self.checkedChanged)
async def onQrImageEncoded(self, ipfsop, encrypt: bool, imgPath: str): basename = os.path.basename(imgPath) file = QFile(imgPath) if encrypt: if not file.open(QIODevice.ReadOnly): return data = file.readAll().data() entry = await self.rsaEncryptSelf(data) else: entry = await ipfsop.addPath(imgPath, offline=True) if entry: # Link it, open it dst = self.pathQrCodesEncrypted if encrypt is True else \ self.pathQrCodes await ipfsop.filesLink(entry, dst, name=basename) await self.ctx.app.resourceOpener.open(entry['Hash'])
def main(): app = QApplication(sys.argv) client = Window() handler = QtHandler(client.ui.logTextEdit) logging.getLogger().addHandler(handler) logging.getLogger("uaclient").setLevel(logging.INFO) logging.getLogger("uawidgets").setLevel(logging.INFO) #logging.getLogger("opcua").setLevel(logging.INFO) # to enable logging of ua client library # set stylesheet if (QSettings().value("dark_mode", "false") == "true"): file = QFile(":/dark.qss") file.open(QFile.ReadOnly | QFile.Text) stream = QTextStream(file) app.setStyleSheet(stream.readAll()) client.show() sys.exit(app.exec_())
def download(self, url): """ download something """ if None == self.__http: self.__http = QHttp() QObject.connect(self.__http, SIGNAL("done(bool)"), self.__downloadFileDone) QObject.connect(self.__http, SIGNAL("dataReadProgress(int, int)"), self.__dataReadProgress) if QUrl(url).scheme() == 'https': connectionMode = QHttp.ConnectionModeHttps else: connectionMode = QHttp.ConnectionModeHttp self.__http.setHost(url.host(), connectionMode, url.port(80)) self.__downloadFile = QFile(tempfile.NamedTemporaryFile().name) self.__http.get(url.path(), self.__downloadFile)
def oncreatePIDFile(self): if self.v2rayProcess.state() == QProcess.NotRunning: return outFile = QFileInfo(self.pidFile) fileName = outFile.fileName() if QFile.exists(fileName): QFile.remove(fileName) outFile = QFile(fileName) v2rayPID = str(self.v2rayProcess.processId()) qDebug("process ID is: {}".format(v2rayPID)) try: outFile.open(QIODevice.WriteOnly | QIODevice.Text) outFile.write(codecs.encode(v2rayPID, "utf-8")) except Exception: pass outFile.close()
def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: inFile = QFile(fileName) if not inFile.open(QFile.ReadOnly): QMessageBox.warning( self, "Codecs", "Cannot read file %s:\n%s" % (fileName, inFile.errorString()), ) return data = inFile.readAll() self.previewForm.setEncodedData(data) if self.previewForm.exec_(): self.textEdit.setPlainText(self.previewForm.decodedString())
def saveHtml(self, fileName): if not QFileInfo(fileName).suffix(): fileName += ".html" try: _, htmltext, _ = self.currentTab.getDocumentForExport(webenv=True) except Exception: return self.printError() htmlFile = QFile(fileName) result = htmlFile.open(QIODevice.WriteOnly) if not result: QMessageBox.warning(self, '', self.tr("Cannot save to file because it is read-only!")) return html = QTextStream(htmlFile) if globalSettings.defaultCodec: html.setCodec(globalSettings.defaultCodec) html << htmltext htmlFile.close()
def write(self, fileNameOrDevice, root): """ Public method to write an Netscape HTML bookmark file. @param fileNameOrDevice name of the file to write (string) or device to write to (QIODevice) @param root root node of the bookmark tree (BookmarkNode) @return flag indicating success (boolean) """ if isinstance(fileNameOrDevice, QIODevice): f = fileNameOrDevice else: f = QFile(fileNameOrDevice) if root is None or not f.open(QFile.WriteOnly): return False self.__dev = f return self.__write(root)
def loadFile(self): fh = None try: fh = QFile(self.filename) if not fh.open(QIODevice.ReadOnly): raise IOError(str(fh.errorString())) stream = QTextStream(fh) stream.setCodec("UTF-8") self.editor.setPlainText(stream.readAll()) self.editor.document().setModified(False) except EnvironmentError as e: QMessageBox.warning(self, "Python 编辑器 -- 加载错误", "加载 {0} 文件失败,错误: {1}".format(self.filename, e)) finally: if fh is not None: fh.close() self.setWindowTitle("Python 编辑器 - {0}".format( QFileInfo(self.filename).fileName()))
def __init__(self, args): QApplication.__init__(self, args) self.setStyle('Fusion') self.setOrganizationName("UZH Zurich") self.setOrganizationDomain("http://www.bodenmillerlab.org") self.setApplicationName("HistoSlider") self.setWindowIcon(QIcon(":/icons/icons8-eukaryotic-cells-96.png")) cache_size_in_kb = 700 * 10 ** 3 QPixmapCache.setCacheLimit(cache_size_in_kb) f = QFile(":/style.qss") f.open(QFile.ReadOnly | QFile.Text) self.setStyleSheet(QTextStream(f).readAll()) f.close() # DataManager singleton initialization Manager()
def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open File", '', "C++ Files (*.cpp *.h)") if path: inFile = QFile(path) if inFile.open(QFile.ReadOnly | QFile.Text): text = inFile.readAll() try: # Python v3. text = str(text, encoding='ascii') except TypeError: # Python v2. text = str(text) self.editor.setPlainText(text)
def init_resources(self): strfile = QFile(':/string/strings') strfile.open(QIODevice.ReadOnly | QIODevice.Text) ts = QTextStream(strfile) key, value = "", "" while ts.atEnd() == False: line = ts.readLine() if len(line) < 1: continue elif line[0] == '@': if key != "": self.strings[key] = value key, value = "", "" key = line[1:] else: value += line self.strings[key] = value strfile.close()