A Python trick at Leetcode
Today, I solved the jump game problem on Leetcode. After submitting the correct answer (runtime: 350 ms), I clicked the […]
Today, I solved the jump game problem on Leetcode. After submitting the correct answer (runtime: 350 ms), I clicked the […]
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、对于一个 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
1. 必须重写 paintEvent() 根据官方文档的说明,如果希望自定义的 QWidget 派生类能够响应 StyleSheet 中定义的样式,就必须用如下代码重写 paintEvent() 方法。(其实应该叫做实现 paintEvent(),因为 QWidget::paintEvent() 本来是个空函数,啥都没做) 换成 Python + PySide6 语法就是: class CustomWidget(QWidget):
假设现在有两个重叠显示的 QWidget 部件,widget_1 与 widget_2。二者无父子关系,只是位置重叠,widget_1 在 widget_2 之上,如下图所示。 这个时候如果鼠标点击在 widget_1 上,widget_2 是不会响应鼠标事件的。因为事件被位于上层的 widget_1 捕获了。 如果我们想让鼠标事件穿透 widget_1,由 widget_2 捕获。就可以给 widget_1 设置