TransferDog 开源发布 🎉
TransferDog 是使用 python 与 pyside6 写的一个文件传输程序。 地址:https://github.com/funway/TransferDog
TransferDog 是使用 python 与 pyside6 写的一个文件传输程序。 地址:https://github.com/funway/TransferDog
1 在源码中事先准备好字符串 对于要进行多语言翻译的字符串,需要在 coding 的时候使用 QCoreApplication.translate() 或者 QObject.tr() 这两个静态方法预埋好“翻译入口”。 如下图所示: 当程序运行时,这两个方法会自动调用当前 QApplication 的 translator 对字符串进行翻译。(如果没有主动设置过 translator,那么就是不翻译。) 对于使用 .ui 文件生成的 .py
Sublime、VSCode 这些编辑器都有一个 “Reveal in Finder” 的功能(macOS 是 Finder, Windows 下是 “Reveal in Explorer”, Linux 下是 “Open Containing Folder”),就是针对某个文件,使用系统默认的文件管理器打开其所在目录,并选中该文件。 大部分文件管理器的命令都有打开目录并选中指定文件的参数。所以要想在自己的程序中实现类似功能,只需要: 找到对应系统的文件管理器命令。macOS
之前在 这篇文章 中,曾用 QSharedMemory 实现了 QT 程序的单实例运行。 除此之外,还有一种方式是使用 QLocalSocket 与 QLocalServer 实现。 与 QSharedMemory 相比,QLocalSocket 更麻烦一点,因为需要第一个运行的进程启动 QLocalServer 来监听后续进程的连接。 但也因为如此,它比 QSharedMemory
今天在 macOS 下使用 pyinstaller 打包程序的时候,遇到一个 codesign 签名的错误。 Error while signing the bundle。我一开始还以为是签名证书的问题,还按照 https://stackoverflow.com/a/68937623/5777080 这里的答案新建了一个自签名的 code signing 证书。但是依然报同样的错误。 其实这个报错的原因是在第二句话:.DS_Store files cannot
1 简单语句 1.1 查询自增值 SELECT IDENT_CURRENT(‘TABLE_NAME’) 1.2 重置自增值 DBCC CHECKIDENT(‘TABLE_NAME’, reseed, 10086) // 将表 TABLE_NAME 的自增值重置为 10086 DBCC CHECKIDENT(‘TABLE_NAME’, reseed)
1 异常现象 今天用到了 QToolBox,然后想给每个 page 添加圆角边框,于是使用了如下 stylesheet QToolBox > QWidget { border: 1px solid silver; border-radius: 6px; } 却发现圆角边框无法闭合。 2
今天给单位的小年轻讲网络安全课程,用了 from_sqli_to_shell_i386 这个靶机。题目简单,iso 文件又小,很适合入门。 这个靶机上有一个网站。先找到网站的 SQL 注入点;然后通过 SQL 注入获取 admin 帐号密码;再使用 admin 用户登录,发现有文件上传的模块;通过文件上传漏洞上传木马文件,获取系统执行权限。Done 👌 贴一下详细的解题过程: 1. 先用下载到的 from_sqli_to_shell_i386.iso 文件新建一个虚拟机
这两天遇到两个问题: 1、对于一个 QTreeView,如何判断一个节点的 QModelIndex 是否处于 QTreeView 可视区域内。当 QTreeView 中有太多节点,必然有些节点是处于可视区域外部的,不显示的。QTreeView 也不会对这些不显示的节点调用 itemdelegate.paint() 方法。 2、如何获取 QTreeView 内容的滚动事件。 不只是对 QTreeView,所有的 QAbstractItemView 派生类,包括 QListView,
之前在文章《深入理解 Python 中的类与元类》中讲了使用 __new__() 方法可以很方便地实现单例模式。但其实那段代码是线程不安全的。 验证代码如下: import threading import time class Singleton(object): _instance = None def __new__(cls, *args, **kwargs): if