将函数附加到对象并调用时:
function f() { return this.x; }
var o = {x: 20};
o.func = f;
o.func(); //evaluates to 20
Run Code Online (Sandbox Code Playgroud)
this指的是函数被称为方法的对象.这等同于做f.call(o).
当函数不是作为对象的一部分调用时,this引用全局对象.如何检查是否从非对象上下文调用函数?是否有任何标准关键字可以访问全局对象?是这样做的唯一方法吗?
globalobj = this;
function f() { if (this == globalobj) doSomething(); }
Run Code Online (Sandbox Code Playgroud)
注意:我在这里没有特别的用例 - 我实际上是在询问这个确切的机制.
首先我看了一下这个get_size_request方法.那里的文档以:
要获得小部件实际使用的大小,请调用
size_request()而不是此方法.
我看着size_request(),结束了
还要记住,大小请求不一定是实际分配小部件的大小.
那么,GTK中是否有任何函数可以获得小部件的实际大小?这是一个屏幕上实际显示的小部件,因此GTK肯定会在某处提供此信息.
非常奇怪的范围错误,我甚至看不到.在updater函数内部,我有一个嵌套的辅助函数来帮助w/something:
def attach_row(ws,r1,r2):
es = []
for i,w in enumerate(ws):
eb = gtk.EventBox()
a = gtk.Alignment(xalign=0.0,yalign=0.5)
a.add(w)
eb.add(a)
eb.set_style(self.rowStyle.copy())
es.append(eb)
self.table.attach(eb, i, i+1, r1, r2,
xoptions=gtk.EXPAND|gtk.FILL,
yoptions=gtk.SHRINK)
def ene(_,ev):
for eb in es:
eb.set_state(gtk.STATE_PRELIGHT)
def lne(_,ev):
for eb in es:
eb.set_state(gtk.STATE_NORMAL)
for eb in es:
eb.connect('enter-notify-event', ene)
eb.connect('leave-notify-event', lne)
Run Code Online (Sandbox Code Playgroud)
这有效,但如果update()函数运行太多,我最终得到:
for eb in es:
NameError: free variable 'es' referenced before assignment in enclosing scope
Run Code Online (Sandbox Code Playgroud)
是什么造成的?在这些函数被调用之前,es肯定会被分配.不是吗?是否有一些奇怪的事情发生在哪里由于某种原因,在创建新的行时调用先前创建的行的ene(),并且封闭的覆盖es被覆盖?
对于我的树视图中的每一行,我想要彼此相邻的4个图像按钮.它们就像单选按钮一样,只有一个可以一次激活.每个按钮都有一个"开"和"关"图像.
我该怎么做呢?我想出了如何将图像放在那里,以及如何放置togglebuttons,但这似乎需要更多的努力,因为没有预先构建的cellrenderer做我想要的.
基本上解决我的问题的是弄清楚如何在gtk.treeview可点击的图像中制作图像.有任何想法吗?
即:打开记事本,字体选择为“Arial,11号”,仔细输入“这只是一个测试”字样,截图如下:
输入并运行以下 Python 代码:
import ImageFont, ImageDraw, Image
im = Image.open("c:/textimg.png") #the above image
pilfont = ImageFont.truetype("arial.ttf", 11)
compimg = Image.new("RGB", im.size, (255, 255, 255))
draw = ImageDraw.Draw(compimg)
draw.text((0,0), "this is just a test", (0,0,0), font=pilfont)
compimg.save("c:/compimg.png")
Run Code Online (Sandbox Code Playgroud)
然而结果却大相径庭:
它不仅尺寸错误,而且还有轻微的阴影,而记事本渲染清晰且没有像素边界。
我怎样才能让它像记事本一样呈现?我在 pygame 上也遇到了这个确切的问题,所以我想我在这里缺少对 TTF 的一些基本了解。
更新:我再次尝试使用 pygame。它做同样的事情。它确实有一个关闭抗锯齿的选项,但看起来它只是根据某个阈值去掉了它会抗锯齿的任何像素。我得到的最接近的近似值是使用大小 15。代码是:
pygfont = pygame.font.Font(r"c:\windows\fonts\arial.ttf", 15)
surf = pygfont.render("this is just a test", False, (0,0,0), (255,255,255))
pygame.image.save(surf, r"c:\pygameimg.png")
Run Code Online (Sandbox Code Playgroud)
和结果(记事本原件放在上面进行比较):
杀了我 http://tinypic.com/images/404.gif
Gah 为什么我不能立即提供赏金?
更新:这里比较了所有方法:
PIL 15,然后是记事本 11,然后是 pygame 15 anti-alias-off,然后是 pygame 15 anti-alias-on。
PIL 15 …
我有一个参数列表,例如["hello", "bobbity bob", "bye"].我将如何格式化这些以便将它们适当地传递给shell?
错了:
>>> " ".join(args)
hello bobbity bob bye
Run Code Online (Sandbox Code Playgroud)
正确:
>>> magic(args)
hello "bobbity bob" bye
Run Code Online (Sandbox Code Playgroud) 我在HTML页面上有几千个按钮.$(".buttonset").buttonset();在文档就绪上运行需要10秒以上.有没有更快的方法来做到这一点,还是我唯一的解决方案以某种方式限制按钮的数量?
我在mousedown复选框上覆盖了该事件,以便通过拖动其他复选框来启用选择.这涉及到必须执行event.preventDefault()以禁用默认文本选择行为.
除了一个令人讨厌的抽动之外,一切都正常工作,即复选框保持在"被按下"状态,直到我松开鼠标(如果不清楚,请尝试按住鼠标选中复选框以查看我的意思).
如何将复选框的状态恢复为完全关闭或完全打开(不是"按下")?
编辑:这是我的代码jsfiddle.
我想写一个包装类,除了添加'reason'属性之外,它取一个值并且表现得像它一样.我有这样的想法:
class ExplainedValue(object):
def __init__(self, value, reason):
self.value = value
self.reason = reason
def __getattribute__(self, name):
print '__getattribute__ with %s called' % (name,)
if name in ('__str__', '__repr__', 'reason', 'value'):
return object.__getattribute__(self, name)
value = object.__getattribute__(self, 'value')
return object.__getattribute__(value, name)
def __str__(self):
return "ExplainedValue(%s, %s)" % (
str(self.value),
self.reason)
__repr__ = __str__
Run Code Online (Sandbox Code Playgroud)
但是,双下划线函数似乎没有被捕获__getattribute__,例如:
>>> numbers = ExplainedValue([1, 2, 3, 4], "it worked")
>>> numbers[0]
Traceback (most recent call last):
File "<pyshell#118>", line 1, in <module>
numbers[0]
TypeError: 'ExplainedValue' …Run Code Online (Sandbox Code Playgroud) python ×6
gtk ×3
javascript ×3
jquery ×2
object ×2
pygtk ×2
api ×1
closures ×1
command-line ×1
font-face ×1
font-size ×1
fonts ×1
formatting ×1
getattr ×1
getattribute ×1
global ×1
gtktreeview ×1
html ×1
jquery-ui ×1
performance ×1
racket ×1
scheme ×1
semantics ×1
shell ×1
truetype ×1