Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyGTK和螺纹_Python_Multithreading_Callback_Pygtk - Fatal编程技术网

Python PyGTK和螺纹

Python PyGTK和螺纹,python,multithreading,callback,pygtk,Python,Multithreading,Callback,Pygtk,我对Python有点陌生,我正在自学它,我要说的是它是一种很棒的编程语言。即使我是以直截了当的方式学习,现在我知道(作为初学者)如何使用GTK、线程、urllib和其他模块 但我需要有经验的PyGTK用户的回答。看看图中的这个小例子: 在这个概念应用程序(它没有工作代码)中,当用户从Gtk.TreeView中选择一行时,我将显示一些从web获取的特定于行的数据(每行的URL不同)。因此,当用户单击一行时,将启动一个线程(不冻结GUI)从URL获取数据。成功获取数据后,将调用回调,显示列表下Gt

我对Python有点陌生,我正在自学它,我要说的是它是一种很棒的编程语言。即使我是以直截了当的方式学习,现在我知道(作为初学者)如何使用GTK、线程、urllib和其他模块

但我需要有经验的PyGTK用户的回答。看看图中的这个小例子:

在这个概念应用程序(它没有工作代码)中,当用户从Gtk.TreeView中选择一行时,我将显示一些从web获取的特定于行的数据(每行的URL不同)。因此,当用户单击一行时,将启动一个线程(不冻结GUI)从URL获取数据。成功获取数据后,将调用回调,显示列表下Gtk.标签中的内容

问题是,如果用户快速选择一些不同的行,那么。。。会有一点混乱,因为有些请求可能需要比其他请求更长的时间,并且在所选行和Gtk.Label中的数据显示器之间会出现“去同步”。我知道无法从外部停止正在运行的线程(即使我找到了一个线程模块,使之成为可能),那么,防止Gtk.Label与当前选择不同步的最佳方法是什么

我为我糟糕的英语和愚蠢的问题感到抱歉。目前,我通过将所选行中的文本与我期望从请求的URL中获得的文本进行比较来解决此问题,但我认为有更好的方法来管理此问题

多谢各位,
Ovidiu Nitan

听起来你已经在做显而易见的事情了。在回调函数中,只需检查它来自的URL是否与当前选定的行匹配,如果不匹配,则忽略它。

听起来你已经在做显而易见的事情了。在回调函数中,只需检查它来自的URL是否与当前选定的行匹配,如果不匹配,则忽略它。

只有运行mainloop的线程才应更新GUI,因此您的下载工作人员无论如何都必须进行通信,例如使用idle\u add。这允许您在启动线程时传递一个令牌,如一个简单计数器或所选树,并将返回的任何结果与上次发送的结果进行比较。只有在匹配时才设置标签。

只有运行mainloop的线程才应该更新GUI,因此您的下载工作者无论如何都必须进行通信,例如使用idle\u add。这允许您在启动线程时传递一个令牌,如一个简单计数器或所选树,并将返回的任何结果与上次发送的结果进行比较。只有在匹配时才能设置标签