小编Chr*_*ris的帖子

为什么Python中不允许使用foo(*arg,x)?

请看下面的例子

point = (1, 2)
size = (2, 3)
color = 'red'

class Rect(object):
    def __init__(self, x, y, width, height, color):
        pass
Run Code Online (Sandbox Code Playgroud)

打电话是非常诱人的:

Rect(*point, *size, color)
Run Code Online (Sandbox Code Playgroud)

可能的解决方法是:

Rect(point[0], point[1], size[0], size[1], color)

Rect(*(point + size), color=color)

Rect(*(point + size + (color,)))
Run Code Online (Sandbox Code Playgroud)

但是为什么Rect(*point, *size, color)不允许,你能想到的是否存在任何语义模糊或普遍缺点?

编辑:具体问题

为什么在函数调用中不允许多个*arg扩展?

为什么*arg扩展后不允许位置参数?

python function variadic-functions

28
推荐指数
2
解决办法
703
查看次数

gVim + US-International:不将死键与空格组合

我在Windows 7上使用"United States-International",与gVim 7.3结合使用会导致问题.

在美国 - 国际键盘布局中键"'死键,这意味着,您可以将它们与另一个键组合.例如压制"+a在结果ä和键'+aá.要插入一个双引号,您只需要点击即可"+space.

但是当我进入"+spacegVim(在编辑模式下)没有任何反应时,没有插入任何字符.当我进一步命中空间时,只插入空格.似乎键"+space没有组合成一个"字符.然而结合"一个ä按预期工作.

当我按下"后跟空格时,"缓冲直到我输入另一个字符,然后与它结合(如果可能的话).例子:

"+space+space+a => » ä«  
"+space+space+b => » "b«
"+space+space+" => » ""«

有谁知道如何解决这个问题?

顺便说一下,vim中的行为不受影响(通过cmd.exe)

keyboard vim quotes

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

如何在 Qt Designer 中设置主题?

我使用 Qt Designer 设计用户界面,然后*.ui在 Python 中加载文件。

对于按钮,我想添加 Breeze 主题中的图标。在 Qt Designer 中,我可以通过“从主题设置图标...”添加图标

在此输入图像描述

但这是从不同的主题加载图标。在我的 Python 代码中,我选择了主题 via。

QtGui.QIcon.setThemeName("breeze")
Run Code Online (Sandbox Code Playgroud)

它在运行时显示如下:

在此输入图像描述

这也是我想在 Qt Designer 中看到的。

问题:如何设置 Qt Designer 以使用 Breeze 主题中的图标?

版本:

  • Qt Creator:基于 Qt 5.5.1 的 3.5.1
  • 乌班图:16.04
  • PySide2:5.12.3
  • 蟒蛇:2.7.12

ubuntu icons qt themes qt-designer

7
推荐指数
0
解决办法
3148
查看次数

Constexpr 构造函数在编译时不求值

我想引入在编译时进行错误检查的强类型。对于我的 chrono 类型,我注意到当基础类型从 变为 时,文字会默默地缩小int64_tint32_t从而导致溢出。所以我引入了显式检查。

delay_t {10s}然而,即使对于常量参数(例如无法表示的 ),在编译时也不会检查此检查。

#include <chrono>
#include <cstdint>
#include <stdexcept>


struct delay_t {
    std::chrono::duration<int32_t, std::nano> value {};

    constexpr explicit delay_t(std::chrono::duration<int64_t, std::nano> delay) 
        : value {delay} 
    {
        if (value != delay) {
            throw std::runtime_error("delay cannot be represented.");
        }
    };
};

auto foo(delay_t delay) -> void {}

auto main() -> int {
    using namespace std::chrono_literals;

    foo(delay_t {10s});  // here I want a compile time error, 
                         // but I get a runtime error.

    return …
Run Code Online (Sandbox Code Playgroud)

c++ constexpr c++11

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