小编Chr*_*uns的帖子

在我的python Qt应用程序中将Mac OSX Application Menu菜单栏项设置为"Python"以外的项目

我正在使用python和Qt编写GUI应用程序.当我在Mac上启动我的应用程序时,屏幕顶部Mac菜单栏中的第一个菜单项是"Python".我更喜欢那里的应用程序名称是我的应用程序的名称.我怎样才能获得我的程序名称?

以下演示程序创建了一个包含两个菜单的窗口:"Python"和"Foo".我不喜欢这样,因为无论我是用python还是COBOL编写应用程序,我的用户都没有区别.相反,我想要菜单"MyApp"和"Foo".

#!/usr/bin/python

# This example demonstrates unwanted "Python"
# application menu name on Mac.

# Makes no difference whether we use PySide or PyQt4
from PySide.QtGui import *
# from PyQt4.QtGui import *

import sys

app = QApplication(sys.argv)
# Mac menubar application menu is always "Python".
# I want "DesiredAppTitle" instead.
# setApplicationName() does not affect Mac menu bar.
app.setApplicationName("DesiredAppTitle")
win = QMainWindow()
# need None parent for menubar on Mac to get custom menus at all
mbar = …
Run Code Online (Sandbox Code Playgroud)

python macos pyside qmenubar

15
推荐指数
3
解决办法
9297
查看次数

从cmake测试cuda功能GPU存在的最简单方法?

我们有一些夜间构建的机器安装了cuda库,但没有安装cuda的GPU.这些机器能够构建启用cuda的程序,但它们无法运行这些程序.

在我们的自动夜间构建过程中,我们的cmake脚本使用cmake命令

find_package(CUDA)

确定是否安装了cuda软件.这会CUDA_FOUND在安装了cuda软件的平台上设置cmake变量.这很棒,而且效果很好.何时CUDA_FOUND设置,可以构建启用cuda的程序.即使机器没有cuda功能的GPU.

但是,使用cuda的测试程序自然会在非GPU cuda机器上失败,导致我们的夜间仪表板看起来"脏".所以我希望cmake避免在这样的机器上运行这些测试.但我仍然想在这些机器上构建cuda软件.

得到一个积极的CUDA_FOUND结果后,我想测试一个实际GPU的存在,然后设置一个变量,比如说CUDA_GPU_FOUND,以反映这一点.

让cmake测试是否存在具有cuda功能的gpu的最简单方法是什么?

这需要在三个平台上运行:Windows与MSVC,Mac和Linux.(这就是为什么我们首先使用cmake)

编辑:在答案中有一些很好看的建议,如何编写程序来测试GPU的存在.仍然缺少的是让CMake在配置时编译和运行该程序的方法.我怀疑TRY_RUNCMake 中的命令在这里很重要,但不幸的是,这个命令几乎没有记录,我无法弄清楚如何让它工作.这个问题的CMake部分可能是一个更加困难的问题.也许我应该把这个问题作为两个单独的问题......

build-automation cuda gpu cmake

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

如何在GLSL片段着色器纹理中访问自动mipmap级别?

在GLSL片段着色器中对纹理进行采样时,如何确定使用的mipmap级别?

我知道我可以使用以下textureLod(...)方法手动采样纹理的特定mipmap级别:

uniform sampler2D myTexture;

void main()
{
    float mipmapLevel = 1;
    vec2 textureCoord = vec2(0.5, 0.5);
    gl_FragColor = textureLod(myTexture, textureCoord, mipmapLevel);
}
Run Code Online (Sandbox Code Playgroud)

或者我可以允许使用texture(...)like 自动选择mipmap级别

uniform sampler2D myTexture;

void main()
{
    vec2 textureCoord = vec2(0.5, 0.5);
    gl_FragColor = texture(myTexture, textureCoord);
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者,因为我相信司机对合适的mipmap级别的判断比我自己的更多.

但我想知道在自动采样过程中使用了什么mipmap级别,以帮助我合理地对附近的像素进行采样.GLSL中是否有一种方法可以访问有关自动纹理样本使用的mipmap级别的信息?

opengl textures glsl mipmaps fragment-shader

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

在Mac上远程登录时,如何在GPU上测试OpenCL?

当我在控制台登录时,我的OpenCL程序可以找到GPU设备,但是当我使用ssh远程登录时却找不到.此外,如果我在ssh会话中以root身份运行程序,程序可以找到GPU.

这款电脑是配备GeForce 9400 GPU的Snow Leopard Mac.

如果我从控制台或以root身份运行程序(见下文),输出如下(注意"GeForce 9400"行):

2 devices found
Device #0 name = GeForce 9400
Device #1 name = Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz
Run Code Online (Sandbox Code Playgroud)

但如果只是我,在ssh上,没有GeForce 9400条目:

1 devices found
Device #0 name = Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz
Run Code Online (Sandbox Code Playgroud)

我想在GPU上测试我的代码,而不必是root.那可能吗?简化的GPU查找程序如下:

#include <stdio.h>
#include <OpenCL/opencl.h>

int main(int argc, char** argv) {
    char dname[500];
    size_t namesize;
    cl_device_id devices[10];
    cl_uint num_devices;
    int d;

    clGetDeviceIDs(0, CL_DEVICE_TYPE_ALL, 10, devices, &num_devices);
    printf("%d devices found\n", num_devices);
    for (d = 0; d < …
Run Code Online (Sandbox Code Playgroud)

macos opencl gpu-programming

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

处理Tcl中带前导零的数字

我在Tcl中使用带前导零的数字遇到麻烦.我正在解析一些可以有前导零的数字,例如"0012",它应该被解释为整数"十二".

$ tclsh
% set a 8 
8
% set b 08
08
% expr $a - 1
7
% expr $b - 1
expected integer but got "08" (looks like invalid octal number)
Run Code Online (Sandbox Code Playgroud)

处理可能在Tcl中具有前导零的数字的最佳方法是什么?

在旁注中,如果"08"是无效的,那么在Tcl中构成有效八进制数的是什么?

parsing integer tcl octal

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

在Python中用字符串中的单位分隔数字

我有包含数字及其单位的字符串,例如2GB,17ft等.我想将数字与单位分开并创建2个不同的字符串.有时,它们之间有一个空格(例如2 GB),并且使用split('')很容易做到.

当他们在一起时(例如2GB),我会测试每个角色,直到找到一个字母,而不是一个数字.

s='17GB'
number=''
unit=''
for c in s:
    if c.isdigit():
        number+=c
    else:
        unit+=c
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

谢谢

python string units-of-measurement

6
推荐指数
4
解决办法
6155
查看次数

gcc reverse_iterator比较运算符丢失了吗?

我在使用gcc的非const容器上使用const反向迭代器时遇到问题.好吧,只有某些版本的gcc.

#include <vector>
#include <iostream>

using namespace std;

int main() {
    const char v0[4] = "abc";
    vector<char> v(v0, v0 + 3);

    // This block works fine
    vector<char>::const_iterator i;
    for (i = v.begin(); i != v.end(); ++i)
        cout << *i;
    cout << endl;

    // This block generates compile error with gcc 3.4.4 and gcc 4.0.1
    vector<char>::const_reverse_iterator r;
    for (r = v.rbegin(); r != v.rend(); ++r)
        cout << *r;
    cout << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个程序编译好并运行gcc 4.2.1(Mac Leopard)和Visual Studio 8和9(Windows)以及gcc 4.1.2(Linux).

但是,gcc …

c++ gcc iterator stl

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

如何使用自定义python类型参数发出PySide信号?

我在PySide python Qt程序中正确使用信号时遇到问题.我想发出一个信号,该信号采用自定义python类型的单个参数.该文件 说:

可以使用QtCore.signal()类定义信号.Python类型和C类型可以作为参数传递给它.

所以我尝试了以下方法:

from PySide import QtCore
from PySide.QtCore import QObject

class Foo:
    pass

class Bar(QObject):
    sig = QtCore.Signal(Foo)

    def baz(self):
        foo = Foo()
        self.sig.emit(foo)

bar = Bar()
bar.baz()
Run Code Online (Sandbox Code Playgroud)

但是得到以下错误:

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    bar.baz()
  File "test.py", line 12, in baz
    self.sig.emit(foo)
TypeError: sig() only accepts 0 arguments, 1 given!
Run Code Online (Sandbox Code Playgroud)

如果我从QObject派生出Foo类,程序运行时没有错误.但是我不应该将我的自定义类型作为参数传递给信号,即使该类型不是从QObject派生的?

这是在Windows 7上的python 2.7.2和PySide 1.0.4.

python qt signals-slots pyside

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

如何在调整JColorChooser的同时不断更新场景颜色?

我正在将 python/Qt GUI 应用程序转换为 Java/Swing。当用户拖动 QColorDialog 中的滑块时,原始应用程序会连续精美地更新场景颜色。如何在 JColorChooser 中获得类似的效果?我发现的所有示例仅在用户单击“应用”或“确定”按钮时更新颜色。当我的用户拖动“红色”滑块时,是否有一种机制可以监听 JColorChooser 中的连续颜色变化?

// How can I listen to every color adjustment?
// (i.e. not just when the user presses "Apply" or "OK"?)
ActionListener actionListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent arg0) {
        System.out.println("color changed");
    }
};
Dialog colorDialog = JColorChooser.createDialog(ColorChannelWidget.this,
        "Select color for channel 3",
        false, // not modal
        new JColorChooser(Color.pink),
        actionListener, actionListener);
colorDialog.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

编辑:

我要更改的颜色位于动态生成的 OpenGL 场景中。不是静态图像。

java user-interface swing color-picker

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