小编los*_*ost的帖子

TkInter按键,键盘释放事件

据我所知,Tk按键和键释放事件只能在按键实际按下或释放时触发?

但是,使用以下简单代码,如果我按住"a"键,我将获得连续按键/键释放事件的连续序列.

我做错了什么还是TkInter越野车?这是关于Linux的Python2.7.

from Tkinter import *
def keyup(e):
    print 'up', e.char
def keydown(e):
    print 'down', e.char

root = Tk()
frame = Frame(root, width=100, height=100)
frame.bind("<KeyPress>", keydown)
frame.bind("<KeyRelease>", keyup)
frame.pack()
frame.focus_set()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

按住"a"时输出:

down a
up a
down a
up a
down a
up a
down a
up a
etc...
Run Code Online (Sandbox Code Playgroud)

python tkinter

25
推荐指数
3
解决办法
3万
查看次数

python:酸洗c对象

首先,我不期待一个解决方案,只是希望有一些关于如何开始的指示.

我有一个带嵌入式Python解释器的C程序.程序用作输入的Python脚本显然是指C语言定义的对象和函数.我现在想让这些物品中的一些可以腌制.

pickle文档描述了如何使用扩展类型进行扩展__reduce__.但这是一个Python方法 - 我如何在底层PyObject中定义它?

相当肯定我错误地理解了一些东西......

python pickle

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

python实现3D刚体平移和旋转

我一直试图找出如何使用python解决以下问题:

  1. 我们有点a,b,c,d形成一个刚体
  2. 一些未知的3D平移和旋转应用于刚体
  3. 我们现在知道a,b,c的坐标
  4. 我们想要计算d的坐标

到目前为止我所知道的:

我无法解决的是如何在给定a,b,c的"新"坐标的情况下计算旋转和平移矩阵.

我可以看到,在一般情况下(非刚体),旋转部分是Wahba的问题,但我认为对于刚体,应该有一些更快的方法直接计算它,通过使用一组正交单位向量要点.

python computational-geometry rotational-matrices

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

迭代ndarray的切片

假设我有一个3D numpy.array,例如尺寸为xyz,有没有办法沿特定轴迭代切片?就像是:

for layer in data.slices(dim=2):
    # do something with layer
Run Code Online (Sandbox Code Playgroud)

编辑:为了澄清,该示例是一个dim = 3数组,即shape =(len_x,len_y,len_z).Elazar和等效的kamjagin解决方案有效,但不是那么通用 - 你必须[:, :, i]手工构建,这意味着你需要知道尺寸,而且代码不够通用,无法处理任意尺寸的数组.您可以通过使用类似的东西来填充缺失的维度[..., :],但是您仍然需要自己构建它.

对不起,应该更清楚,这个例子有点太简单了!

python numpy slice

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

访问__init__参数

是否可以访问传递给它的参数__init__,而无需显式存储它们?

例如

class thing(object):
  def __init__(self, name, data):
    pass # do something useful here

t = thing('test', [1,2,3,])
print t.__args__ # doesn't exist

>> ('test', [1,2,3])
Run Code Online (Sandbox Code Playgroud)

用例是创建一个超类,它可以自动存储用于创建从中派生的类实例的参数,而不必将所有参数显式传递给超类__init__.也许有一种更容易的方法!

python

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

检查对象是否是Exception类

我有一些代码可以:

try:
    result = func()
except StandardError as e:
    result = e
Run Code Online (Sandbox Code Playgroud)

如何检查是否result包含异常?

使用isinstance(result, Exception)不起作用,因为异常是一个类,而不是一个实例,例如type(ValueError)给出<type 'type'>.

---编辑---

那是愚蠢的; 虽然上面的代码是我正在使用的正确方法func(),但我的测试func()是做什么的return ValueError,而不是raise ValueError.前者返回类,后者返回实例.所以问题不像描述的那样.

python

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