我正在使用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) 我们有一些夜间构建的机器安装了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部分可能是一个更加困难的问题.也许我应该把这个问题作为两个单独的问题......
在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级别的信息?
当我在控制台登录时,我的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) 我在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中构成有效八进制数的是什么?
我有包含数字及其单位的字符串,例如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)
有没有更好的方法呢?
谢谢
我在使用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 …
我在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 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 场景中。不是静态图像。