小编Wic*_*xin的帖子

Python - 如何更改列表列表中的值?

我有一个列表列表,列表中的每个列表包含5个项目,如何更改列表中项目的值?我尝试过以下方法:

    for [itemnumber, ctype, x, y, delay] in execlist:
        if itemnumber == mynumber:
            ctype = myctype
            x = myx
            y = myy
            delay = mydelay
Run Code Online (Sandbox Code Playgroud)

最初我有一个元组列表,但我意识到我不能更改元组中的值,所以我切换到列表但我仍然无法更改任何值.如果我在for循环中打印ctype,x,y,delay,myctype,myx,myy或mydelay,似乎一切正常,但如果我之后打印execlist,我看到没有任何改变.

python python-2.7

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

Python - 在不使用100%cpu的情况下检查按键

我正在使用Tkinter在Python中编写GUI程序,我需要一种方法来检查是否正在发生按键操作而不使用我的所有CPU.目前我正在使用线程模块启动一个线程,该线程将检查按键而不冻结接口(Tkinter).我在我的线程中的while循环中使用win32api.GetKeyState(),以便它不断检查键的状态,因为它需要能够判断键是否被按下,即使窗口没有焦点.问题是程序在我启动线程时使用100%cpu.如果我在循环中放置一个time.sleep(),它会大大减少cpu的使用量,但实际的按键和它知道你按下一个键的时间之间会有一个延迟.有没有一种方法可以捕获按键,即使窗口没有聚焦而没有使用这么多的CPU也会被按下?

from Tkinter import *
import win32api

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()

        coords = StringVar()

        Label(master=self, textvariable=coords).pack()

        def GetCoords():
            coords.set(str(win32api.GetCursorPos()))

        root.bind_all("<Scroll_Lock>", self.GetCoords)



root = Tk()
app = Application(master=root)
#root.wm_iconbitmap(default='INSERT ICON HERE')
#root.wm_title("TITLE OF PROGRAM")
#app.master.maxsize(640, 480)
app.master.minsize(640, 480)
app.master.resizable(0, 0)
app.mainloop()
app.quit()
Run Code Online (Sandbox Code Playgroud)

该脚本给出了以下结果:AttributeError:应用程序实例没有属性'GetCoords'

python winapi multithreading tkinter keypress

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

Python - 队列 - 为什么我的元组会被砍掉?

为什么当我将一个元组放入这样的队列时:

myqueue.put(('Thread Started'))
Run Code Online (Sandbox Code Playgroud)

我像这样调用.get():

item = myqueue.get()
print item
Run Code Online (Sandbox Code Playgroud)

它打印这个:

('T', 'h', 'r', 'e', 'a', 'd', ' ', 'S', 't', 'a', 'r', 't', 'e', 'd')
Run Code Online (Sandbox Code Playgroud)

这种行为的原因是什么?我怎样才能恢复原来的元组?

python string queue multithreading tuples

0
推荐指数
2
解决办法
5177
查看次数