我正在使用 gtk.TreeStore 的两个实例(在 pyGTK 2.10 中)来创建两个下拉菜单 ComboBox 小部件;称他们为device和command。在设备ComboBox 中选择的值将改变命令ComboBox 中可用的值。进行命令选择时,设备和命令选择的组合用于完成更多工作(显示其他可能的参数等)
通常应该发生这样的事情:
- 填充和设置设备小部件的模型
- 连接设备处理程序(用于“更改”事件)
- 连接命令处理程序(用于“更改”事件)
- 显示设备小部件
- 显示命令小部件
- 等待选择
- 处理设备选择,清除/填充命令小部件的模型
- 工艺指令选择
- 前往 6
现在,假设在#8 的中间,用户真的很快并返回选择另一个设备,并且在处理第二个设备-selection 事件之前,他们选择了另一个命令(从初始设备选择中填充)。第二个命令选择事件与处理第二个设备选择事件后可能不再有效的上下文一起出现。
在设备选择处理中执行以下操作的最佳做法是:
- 隐藏命令小部件
- 清除事件队列(通过对所有未决事件调用 gtk.gdk.event_get(),随时释放)
- 清除命令小部件
- [重新]填充命令小部件的模型
- 显示命令小部件
还是有另一种更优雅的方式?我的意思是,没有一些可以强制发生的自动事件清除,对吧?