小编Pau*_*ois的帖子

string.Format如何处理空值?

在下面的代码中,为什么这两个string.Format调用的行为方式不一样?在第一个中,没有抛出任何异常,但在第二个ArgumentNullException抛出了一个异常.

static void Main(string[] args)
{
    Exception e = null;
    string msgOne = string.Format("An exception occurred: {0}", e);
    string msgTwo = string.Format("Another exception occurred: {0}", null);
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解两者的区别吗?

.net c# string.format

62
推荐指数
3
解决办法
4万
查看次数

我丢失了我的公钥.我可以从私钥中恢复吗?

我为iOS/OSX开发创建了密钥对+签名证书.在某个地方,我丢失了与我的私钥一起使用的公钥.也许是因为Keychain Access没有将私钥和公钥组合在一起,就像它与证书和私钥一样(这太刺激了!为什么(不)这样做!)

在Keychain Access中,我仍然可以右键单击私钥 - >"申请证书"; 但没有公钥可用,我收到错误"无法在钥匙串中找到指定的项目".我确定公钥是可以恢复的,但是如何?显然,Keychain Access不够智能,无法自动完成.

我最终想出了这一点,几天之后我的答案就会正确,除非有人在答案中添加新内容.

iphone macos openssl keychain ios

21
推荐指数
1
解决办法
1万
查看次数

将HSB/HSV颜色转换为HSL

我可以将HSB颜色转换为HSL吗?

Photoshop在其颜色选择器中显示HSB颜色.HSL颜色可以在CSS中使用.

我试过这个JS:

function hsb2hsl(h, s, b) {
  return {
    h: h,
    s: s,
    l: b-s/2
  }
}

hsb2hsl(0, 100, 50).l == 0不是25

更新:如果不转换HSB→RGB→HSL,我可以这样做吗?

javascript hsl colors hsv hsb

13
推荐指数
4
解决办法
2万
查看次数

在 virtualenv 中加载本机 Windows python 模块时,如何诊断 ImportError: DLL load failed?

我使用的是 Python 3.x 和 virtualenv——不是 conda,只是一个普通的 virtualenv。我激活 venv 并运行pip install opencv-python。但是, import cv2给我一个 DLL 未找到错误:

(tf) C:\>python
Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\src\venv\tf\lib\site-packages\cv2\__init__.py", line 4, in <module>
    from .cv2 import *
ImportError: DLL load failed: The specified module could not be found.
>>>
Run Code Online (Sandbox Code Playgroud)

这是一个 …

python virtualenv

3
推荐指数
1
解决办法
7580
查看次数

如何有效地扩展 QTreeView 的整个子树?

编辑:事实证明,根本性能问题是附加到 Expanded() 信号的尺寸适应函数,因此我将接受第一个答案并删除这个具有误导性的问题。

注意:我问这个问题是为了提供答案(也许会得到更好的答案)。该解决方案并不直观。

MacOS 版本的 Qt 可能有办法让用户扩展整个 QTreeView 子树(有一个未解决的错误),但非 MacOS 版本绝对没有。我正在尝试实现“按住 Shift 键并单击项目装饰可展开整个子树”的行为。

有两个问题。两者中较容易的一个是检测装饰上的 Shift 键单击。我通过拦截展开/折叠信号来做到这一点;他们检查 mousePressEvent 设置的一些“全局”状态:

# similar implementation for _on_expanded
@pyqtSlot(QModelIndex)
def _on_collapsed(self, index):
    if self._in_shift_press:
        self._in_shift_press = False
        _recursive_set_expanded(self, index, False)

def mousePressEvent(self, evt):
    # Make shift-click expand/collapse all
    if int(evt.modifiers() & Qt.ShiftModifier) != 0:
        self._in_shift_press = True
    try:
        QTreeView.mousePressEvent(self, evt)
    finally:
        self._in_shift_press = False
Run Code Online (Sandbox Code Playgroud)

这有点难看,但效果很好。

更难的问题是实现 _recursive_set_expanded(view, root, state)。递归崩溃非常快。然而,对索引的所有后代调用 view.setExpanded(True) 的明显实现非常非常慢——约 100 个索引需要花费数秒的时间。问题不在于昂贵的数据模型,因为 view.expandAll() 非常快。

一些源代码研究表明,expandAll() 所做的工作明显少于 Expand()。但是,Qt API 不公开 ExpandSubtree() 方法。如果不深入研究私有实现,如何才能快速实现这一点?

qt4 pyqt qtreeview

1
推荐指数
1
解决办法
3937
查看次数

标签 统计

.net ×1

c# ×1

colors ×1

hsb ×1

hsl ×1

hsv ×1

ios ×1

iphone ×1

javascript ×1

keychain ×1

macos ×1

openssl ×1

pyqt ×1

python ×1

qt4 ×1

qtreeview ×1

string.format ×1

virtualenv ×1