小编Hug*_*ugh的帖子

OSX:定义一个直接指向Python脚本的新URL处理程序

我正在尝试在OSX下定义一个指向python脚本的新URL处理程序.

我已将Python脚本包装到applet中(右键单击.py,然后打开Open With - > Build Applet)

我已将以下内容添加到applet的Info.plist中:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Do My Thing</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>dmt</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

我还使用了更多Internet首选项窗格将"dmt"指定为协议,但是当我尝试将协议链接到我的applet时,它说"将应用程序设置为帮助程序时出现问题"

谁知道我应该从哪里去?

谢谢

python url macos handler

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

Python:允许未明确定义的方法被称为ala __getattr__

我正在尝试编写一个能够执行以下操作的Python类:

c = MyClass()
a = c.A("a name for A") # Calls internally c.create("A", "a name for A")
b = c.B("a name for B") # Calls internally c.create("B", "a name for B")
Run Code Online (Sandbox Code Playgroud)

A和B可以是任何东西(好吧,它们是在数据库中定义的,但我不想在我的代码中明确定义它们)

一个hacky解决方法是执行以下操作:

class MyClass():
    def __init__(self):
        self.createItem = ""

    def create(self, itemType, itemName):
        print "Creating item %s with name %s" % (itemType, itemName)

    def create_wrapper(self, name):
        self.create(self.createItem, name)

    def __getattr__(self, attrName):
        self.createItem = attrName
        return self.create_wrapper
Run Code Online (Sandbox Code Playgroud)

当用户调用类似以下内容时,这将起作用:

a = c.A("nameA")
b = c.B("nameB")
Run Code Online (Sandbox Code Playgroud)

但是,在没有被调用的情况下存储函数指针的情况下,它将会崩溃:

aFunc = c.A
bFunc …
Run Code Online (Sandbox Code Playgroud)

python methods class

5
推荐指数
2
解决办法
1763
查看次数

在PyQt中设置工具提示的文本颜色

我一直在为我正在编写的应用程序添加工具提示,并且工具提示文本的颜色存在问题.

该应用程序有许多按钮,根据按钮的状态更改背景和文本颜色.文字是白色或黑色.

工具提示文本颜色似乎始终遵循按钮文本的颜色.当按钮上的文本为白色时,它就可以了,但如果按钮上的文本是黑色,则工具提示是黑色背景上的黑色文本.我希望能够拥有的工具提示始终是黑色的白色文字,无论按钮的颜色如何.

为此,我使用以下方法设置工具提示:

self.setToolTip(toolTip)
Run Code Online (Sandbox Code Playgroud)

现在我确实找到了一个可能的解决方案,但它有自己的问题:

self.setToolTip("<font color=white>%s</font>" % toolTip.replace("\n", "<br/>"))
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,工具提示中的行开始换行,而不是将整行长度保持在一行,这就是我想要它做的.

有关如何在不使用HTML的情况下更改工具提示颜色或如何使基于HTML的工具提示不包装的任何建议?

谢谢

python qt4 pyqt4

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

subprocess.Popen :分离 stdout/stderr 但保持顺序

如何使用 subprocess.Popen 从命令获取输出,并为 stdout 和 stderr 提供单独的回调,但确保按照来自进程的行的顺序调用这些回调?

如果我不关心分离 STDOUT 和 STDERR 那么我可以这样做:

fd = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT )
line = fd.stdout.readline()
while line :
    callback( line )
    line = fd.stdout.readline()
Run Code Online (Sandbox Code Playgroud)

但是,如果我有stdoutCallbackstderrCallback,并且希望它们在适当的输出上调用,但按照与上述代码调用的顺序相同callback,我将如何去做呢?

python subprocess

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

具有模板化参数的部分特化函数模板

我有一个模板功能(为简化起见,我们称之为"添加")

template<typename T>
inline T add(const T a, const T b)
{
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

我可以将它专门用于某些类型,但我想做的是将它专门用于模板类型.

就我而言,我的模板类型被调用Vec2<T>.它是一个二维三角矢量(如x和y,而不是c ++矢量!)

我想做的是将我的add函数专门用于通用情况Vec2<T>,而不是专门针对Vec2可能使用的每种类型.

Vec2<T>来自的库具有V2d(double),V2f(float)和V2i(int)的typedef .

我可以使用以下内容专门针对每个方面:

template<>
inline V2f add<V2f>(const V2f a, const V2f b)
{
    return V2f(a.x + b.x, a.y + b.y);
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够做到的,这就是我发现自己陷入困境的地方,如:

template<typename S>
inline Vec2<S> add<Vec2<S> >(const Vec2<S> a, const Vec2<S> b)
{
    return Vec2<S>(a.x + b.x, a.y + b.y);
}
Run Code Online (Sandbox Code Playgroud)

我觉得必须有这样做的方法,但我很难找到合适的语法.

c++ templates partial-specialization template-specialization

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