小编fly*_*eep的帖子

在OpenGL上懒惰渲染Qt

我遇到了这个问题,并且知道可以做得更好.

问题:

当用Qt小部件覆盖QGLWidget(Qt OpenGL上下文视图)时,Qt会在每个Qt帧之后重绘这些小部件.

Qt不是为了不断重新绘制整个窗口> 60fps,所以速度非常慢.

我的想法:

让Qt使用其他东西来绘制:透明纹理.使OpenGL在重绘时使用此纹理,并将其绘制在其他所有内容之上.使Qt将与OpenGL上下文视图的所有交互重定向到绘制到纹理上的小部件.

优点是Qt只需要重新绘制(例如,悬停或点击小部件,或文本字段中的文本光标闪烁),并且可以进行更快的部分重绘.

我的问题:

怎么解决这个问题?我怎么能告诉Qt绘制纹理?我如何将与窗口小部件的交互重定向到另一个窗口小部件(例如,如果我将鼠标移动到上下文视图中区域上方,其中复选框位于绘制到纹理窗口小部件中,Qt应将此事件注册到复选框并重新绘制以反映它的国家)

c++ opengl qt qt4 paint

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

如何获取缺少属性的对象

假设我们尝试访问不存在的属性:

>>> {'foo': 'bar'}.gte('foo')  # well, I meant “get”!
Run Code Online (Sandbox Code Playgroud)

Python AttributeError只有args一个包含已完成错误消息的字符串的属性:'dict' object has no attribute 'gte'

使用inspect和/或traceback模块sys.last_traceback,是否有办法获取实际的dict对象?

>>> offending_object = get_attributeerror_obj(sys.last_traceback)
>>> dir(offending_object)
[...
 'clear',
 'copy',
 'fromkeys',
 'get',       # ah, here it is!
 'items',
 ...]
Run Code Online (Sandbox Code Playgroud)

编辑:因为猫无论如何都不在了,我会分享我的发现和代码(请不要解决这个问题并提交给PyPI,请;))

AttributeError是在这里创建的,它表明显然没有引用附加的原始对象.

这里的代码具有相同的占位符函数:

import sys
import re
import difflib

AE_MSG_RE = re.compile(r"'(\w+)' object has no attribute '(\w+)'")

def get_attributeerror_obj(tb):
    ???

old_hook = sys.excepthook

def did_you_mean_hook(type, exc, tb):
    old_hook(type, exc, tb)

    if …
Run Code Online (Sandbox Code Playgroud)

python exception inspection

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

PyQt中的线程和信号问题

我在PyQt中的Threads之间进行通信时遇到了一些问题.我正在使用信号在两个线程,发送者和监听器之间进行通信.发送方发送消息,预计将由侦听器接收.但是,没有收到任何消息.任何人都可以建议可能出错的地方?我敢肯定它一定很简单,但我一直在寻找几个小时但没找到任何东西.提前致谢!

from PyQt4 import QtCore,QtGui
import time

class Listener(QtCore.QThread):    
    def __init__(self):
        super(Listener,self).__init__()

    def run(self):
        # just stay alive, waiting for messages
        print 'Listener started'
        while True:
            print '...'
            time.sleep(2)

    def say_hello(self):
        print ' --> Receiver: Hello World!'

class Sender(QtCore.QThread):
    # a signal with no arguments
    signal = QtCore.pyqtSignal()

    def __init__(self):
        super(Sender,self).__init__()
        # create and start a listener
        self.listener = Listener()
        self.listener.start()
        # connect up the signal
        self.signal.connect(self.listener.say_hello)
        # start this thread
        self.start()

    def run(self):
        print 'Sender starting'
        # send five …
Run Code Online (Sandbox Code Playgroud)

python multithreading signals pyqt

6
推荐指数
2
解决办法
9376
查看次数

在集合类型中获得当前极值的最佳方法

我现在有点累了所以我可能会错过这个显而易见的事情.

我有一个var _minVal: Option[Double],它将保存Doubles 集合中包含的最小值(如果集合为空,则为None)

在向集合添加新项目时,我也检查是否_minVal为None或大于新项目(=新mimimum的候​​选项).

我已经离开了

_minVal = Some(_minVal match {
    case Some(oldMin) => if (candidate < oldMin) candidate
                         else                    oldMin
    case None         =>                         candidate
})
Run Code Online (Sandbox Code Playgroud)

(不是很干)来

_minVal = Some(min(_minVal getOrElse candidate, candidate))
Run Code Online (Sandbox Code Playgroud)

但仍然认为我可能会遗漏一些东西......

scala max min option

6
推荐指数
2
解决办法
302
查看次数

浏览器在渐变中处理CSS"透明"

虽然CSS颜色rgba(255,255,255,0)rgba(0,0,0,0)显然是相同的,即transparent,当被看作纯色时,它们会影响渐变中的中间色:

linear-gradient(left center, rgba(0,0,0,0), rgba(255,255,255,1))
Run Code Online (Sandbox Code Playgroud)

这在两端之间产生灰色半透明色调.

现在我的问题:

  1. 浏览器是transparent自动选择"正确"颜色还是固定颜色(很可能是"黑色透明"或"白色透明")?

  2. 浏览器之间有不同之处吗?

css transparency gradient colors css3

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

在对字段进行模式匹配时修改字段

我今天第一次尝试 Rust(编写 XML 标记器),自然不明白一切:

我有一个带有可以采用枚举值的字段的结构:

enum State { Outside, InATag(~str) }
struct Tokenizer { state: State }
Run Code Online (Sandbox Code Playgroud)

在 a 中impl Tokenizer,我想匹配当前状态,并在某些情况下更改它,但是这总是会use of moved value出错。

H 访问和/或声明状态字段,以便我可以匹配它并在匹配分支内更改其值?


抱歉造成混淆,我的意思是更改 Tokenizer 的 state 字段,而不是 state 的 String 字段!

match self.state {
    InATag(name) => self.state = Outside,
    Outside => ()
}
Run Code Online (Sandbox Code Playgroud)

pointers pattern-matching rust

6
推荐指数
2
解决办法
1551
查看次数

如何在 OpenGL ES Android 中绘制网格线?

我想绘制 10 x 10 定义地平面的网格,使中心成为世界坐标的原点。这是为网格中定义的每一行调用的代码。

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVerticesBuffer);

gl.glTranslatef(x, y, z);
gl.glRotatef(rz, 0, 0, 1);
gl.glRotatef(rx, 1, 0, 0);
gl.glRotatef(ry, 0, 1, 0);

gl.glDrawArrays(GL10.GL_LINES, 0, 2);

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
Run Code Online (Sandbox Code Playgroud)

问题是我只看到一条水平线。所以我觉得有些不对劲。

这是定义行的代码:

Line line;

for (int i = 0; i <= 10; i++) {
    // horizontal lines
    line =  new Line(-50, 0, 0, 50, 0, 0, 0, 0, 1, 1);  // blue line
    line.z = (i * 100) - 50;
    lines.add(line);

    // draw perspective lines
    line =  new Line(-50, …
Run Code Online (Sandbox Code Playgroud)

android opengl-es

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

挂钩组件

我正在尝试创建一个图表可重用组件,但我无法围绕它进行创建.

我们的想法是使用react(让我们称之为"Axes")重用以下SVG,以及一些功能和状态,如宽度和高度,数据→坐标映射等等:

<svg width={...} height={...}>
    <g ref="area" transform={...}>
        {chartElements}
    </g>
    <g ref="xAxis">...</g>
    <g ref="yAxis">...</g>
</svg>
Run Code Online (Sandbox Code Playgroud)

然后我将这个SVG和状态用于多个图表组件.

做到这一点的方法可能是

  1. 使Axes成为一个组件,this.props.children代替使用chartElements,并定义一个Chart组件,如下所示:

    render: function() {
        return (
            <Axes ref="axes" {...this.props}>
            {this.props.data.map(function(d) {
                return <rect x={this.refs.axes.state.xMap(d)} />
            })}
            </Axes>
        )
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但这需要访问Axes的道具和状态,在渲染过程中我们不能这样做.

  2. 将功能包装在mixin中,并将render方法更改为mixin的wrapAxes(chartElements)方法,该方法返回上面的代码段.

    这将混合Axes和图表的状态,需要特别注意,因为每个图表需要在其返回值上调用wrapAxes

  3. 传递一个组件作为prop,然后在渲染时传递状态/道具?这甚至可能吗?

  4. ???

我只是不知道如何处理这个问题.

javascript reusability reactjs

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

获得线性方程的所有正整数解

我玩的游戏有一个谜题,涉及解决以下等式:

x*411 + y*295 + z*161 = 3200
Run Code Online (Sandbox Code Playgroud)

不想以为我只是打了它sympy,我还没有真正用到那一点:

>>> from sympy import *
>>> x, y, z = symbols('x y z', integer=True, positive=True)
>>> solve(x*411 + y*295 + z*161 - 3200, [x, y, z])
[{x: -295*y/411 - 161*z/411 + 3200/411}]
Run Code Online (Sandbox Code Playgroud)

嗯,这只给了我一个依赖的解决方案,但我想在域中所有可能的解决方案我将变量约束到,例如(假设没有其他解决方案)[{x: 4, y: 2, z:6}][(4, 2, 6)]

当然我现在可以在嵌套循环中手动替换两个变量,或者手动解决它(就像我上面的解决方案一样),但我想知道如何让sympy(或其他库)为我做这件事.

python sympy

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

是否可以让宏扩展为结构字段?

我想执行以下操作,但该位置的宏似乎不起作用(我得到error: expected `:`, found `!`. 如何模式匹配单个结构成员并根据匹配将属性附加到它们?

use serde_derive::Serialize;

macro_rules! optional_param {
    ($name:ident : Option<$type:ty>) => { #[serde(skip_serializing_if = "Option::is_none")] pub $name: Option<$ty> };
    ($name:ident : Vec   <$type:ty>) => { #[serde(skip_serializing_if = "Vec::is_empty"  )] pub $name: Vec   <$ty> };
    ($name:ident : bool            ) => { #[serde(skip_serializing_if = "bool::not"      )] pub $name: bool        };
}

macro_rules! impl_extra {
    ( $name:ident { $( $param:ident : $type:ty ),* $(,)* } ) => (
        #[derive(Default,Debug,Serialize)]
        pub struct $name {
            $( optional_param!($param : $type), …
Run Code Online (Sandbox Code Playgroud)

macros rust

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