小编mgi*_*son的帖子

如何绑定到Tkinter中的所有数字键?

有没有办法绑定到Tkinter中的所有数字键?

它应该等同于:

frame.bind("0", my_handler)
frame.bind("1", my_handler)
frame.bind("2", my_handler)
...
Run Code Online (Sandbox Code Playgroud)

我希望我能找到类似的东西:

frame.bind("< num>", my_handler)
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.

python user-interface tkinter

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

Python“可调用”属性(伪属性)

在 python 中,我可以通过直接分配给属性或通过调用改变属性状态的方法来改变实例的状态:

foo.thing = 'baz'
Run Code Online (Sandbox Code Playgroud)

或者:

foo.thing('baz')
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来创建一个接受上述两种形式的类,该类可以扩展到大量具有这种行为的属性?(很快,我将展示一个我不太喜欢的实现示例。)如果您认为这是一个愚蠢的 API,请告诉我,但也许需要一个更具体的示例。说我有Document课。 Document可以有一个属性title。然而,title可能也希望有一些状态(字体,字体大小,对齐方式,...),但普通用户可能会很高兴只需将标题设置为字符串并完成它...

实现这一目标的一种方法是:

class Title(object):
     def __init__(self,text,font='times',size=12):
         self.text = text
         self.font = font
         self.size = size
     def __call__(self,*text,**kwargs):
         if(text):
             self.text = text[0]
         for k,v in kwargs.items():
             setattr(self,k,v)
     def __str__(self):
         return '<title font={font}, size={size}>{text}</title>'.format(text=self.text,size=self.size,font=self.font)

class Document(object):
     _special_attr = set(['title'])
     def __setattr__(self,k,v):
         if k in self._special_attr and hasattr(self,k):
             getattr(self,k)(v)
         else:
             object.__setattr__(self,k,v)

     def __init__(self,text="",title=""):
         self.title = Title(title)
         self.text = text

     def __str__(self):
         return str(self.title)+'<body>'+self.text+'</body>'
Run Code Online (Sandbox Code Playgroud)

现在我可以按如下方式使用它:

doc = …
Run Code Online (Sandbox Code Playgroud)

python properties

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

动态地向matplotlib图添加垂直线

当用户点击某个特定点时,我正试图动态地将垂直线添加到matplotlib图中.

import matplotlib.pyplot as plt
import matplotlib.dates as mdate


class PointPicker(object):
    def __init__(self,dates,values):

        self.fig = plt.figure()
        self.ax = self.fig.add_subplot(111)

        self.lines2d, = self.ax.plot_date(dates, values, linestyle='-',picker=5)

        self.fig.canvas.mpl_connect('pick_event', self.onpick)
        self.fig.canvas.mpl_connect('key_press_event', self.onpress)

    def onpress(self, event):
        """define some key press events"""
        if event.key.lower() == 'q':
            sys.exit()

    def onpick(self,event):
        x = event.mouseevent.xdata
        y = event.mouseevent.ydata
        print self.ax.axvline(x=x, visible=True)
        x = mdate.num2date(x)
        print x,y,type(x)


if __name__ == '__main__':
    import numpy as np
    import datetime

    dates=[datetime.datetime.now()+i*datetime.timedelta(days=1) for i in range(100)]
    values = np.random.random(100)

    plt.ion()
    p = PointPicker(dates,values)
    plt.show() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

Python:是否可以启动具有特定PID的进程?

我想使用启动子进程subprocess.Popen().

是否可以为该过程分配预定的PID?

python subprocess

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

在Python中迭代文件对象不起作用,但readlines()确实有效但效率低下

在以下代码中,如果我使用:

for line in fin:
Run Code Online (Sandbox Code Playgroud)

它只执行'a'

但如果我使用:

wordlist = fin.readlines()
for line in wordlist:
Run Code Online (Sandbox Code Playgroud)

然后它执行直通z.

但是立即readlines()读取整个文件,这是我不想要的.

怎么避免这个?

def avoids():
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    num_words = {}

    fin = open('words.txt')

    for char in alphabet:
      num_words[char] = 0
      for line in fin:
        not_found = True
        word = line.strip()
        if word.lower().find(char.lower()) != -1:
          num_words[char] += 1
    fin.close()
    return num_words
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
2
解决办法
2048
查看次数

使用python中的x和y值将直方图绘制为matplot中的线图

我有两个X轴和Y轴输入值.我想将直方图绘制为折线图.附图中提供了一个例子.我无法使用这些值绘制直方图.

ys = [0.21428571428571427, 0.14285714285714285, 0.047619047619047616, 0.11904761904761904, 0.09523809523809523, 0.09523809523809523, 0.023809523809523808, 0.09523809523809523, 0.11904761904761904, 0.047619047619047616]

xs = [0,1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)

我试过了

plt.hist(xs,ys)
plt.show()
Run Code Online (Sandbox Code Playgroud)

但它失败了.

我对如下图形感兴趣,最好在直方图上有和没有直线.

在此输入图像描述.

X轴和Y轴分配有xs和ys的值.

python linegraph matplotlib histogram

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

Python TKInter:属性错误:'NoneType'对象没有属性'create_image'

我正在尝试创建Tkinter GUI,并且尝试在画布上放置gif图像时出现属性错误。

canvas_1 = Canvas(width = 800, height = 450, bg = "blue").pack()
gif = PhotoImage(file = "C:\\Users\\Luke\\Desktop\\fb.gif")
canvas_1.create_image(0, 0, image = gif, anchor = NW)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

  canvas_1.create_image(0, 0, image = gif, anchor = NW)
AttributeError: 'NoneType' object has no attribute 'create_image'
Run Code Online (Sandbox Code Playgroud)

提前致谢。

python tkinter

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

用Python中的字符串替换类方法

让我们说我想这样做

hashlibAlgo = "md5"
Hash= hashlib.**"hashlibAlgo"**("blah blah blah").hexdigest()
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点.如果我用字符串替换方法的名称,它显然不起作用.我怎样才能使它工作?在powershell中很简单,但我无法在Python中找到它.

python md5 function substitution

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

python:无法解释的无限递归与__repr__

这是一段代码,它进入一个无限递归循环,它只包含__repr__函数,似乎在调用自身.但我真的看不到它是怎么称呼它自己的.而且,我甚至无法理解,它是如何被称为:

class MyList(list): #this is storage for MyDict objects
    def __init__(self):
        super(MyList, self).__init__()

class MyDict(dict):
    def __init__(self, mylist):
        self.mylist = mylist #mydict remembers mylist, to which it belongs
    def __hash__(self):
        return id(self)
    def __eq__(self, other):
        return self is other
    def __repr__(self):
        return str(self.mylist.index(self)) #!!!this is the crazy repr, going into recursion
    def __str__(self):
        return str(self.__repr__())

mylist = MyList()
mydict = MyDict(mylist)
mydict.update({1:2})
print str(mylist.index(mydict)) #here we die :(
Run Code Online (Sandbox Code Playgroud)

执行此代码会导致:

Traceback (most recent call last):
  File "test_analogue.py", line 20, …
Run Code Online (Sandbox Code Playgroud)

python debugging recursion repr

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

popen和mysql的python问题

我是Python的新手,而且已经好几年没有使用Linux了,所以我不确定我在哪里纠结。我正在尝试使用Popen在Ubuntu上的MySQL中运行sql文件。

以下是相关代码:

command = ['mysql', '-uUSER', '-pPWD','-h192.168.1.132',  '--database=dbName', '<', './1477597236_foo.sql' ]
print("command is: "+subprocess.list2cmdline(command))

proc = subprocess.Popen(
    command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, cwd='.'
)
Run Code Online (Sandbox Code Playgroud)

其输出与运行'mysql --help'相同。让我感到困惑的是,如果我接受subprocess.list2cmdline的命令输出并直接运行它,它将运行得很好。另外,如果我替换'< file.sql''-e select * from foo',它将运行。因此,'<'和文件导致了我的问题。我知道是什么引起了这个问题,但是到目前为止我还没有尝试过解决问题的方法。

tia,克雷格

python mysql popen

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