在Python中同时监听网络事件和键盘输入

1 投票
3 回答
832 浏览
提问于 2025-04-17 04:25

我想写一个图形界面应用程序,这个程序需要同时监听键盘事件(客户端生成的事件)和网络端口(服务器生成的事件)。我希望能得到一些高层次的建议来实现这个功能。以下是一些额外的信息:

  • 我正在使用wxPython模块来创建图形界面。
  • 我可以把socket设置为非阻塞模式,但这样的话我就得不断地执行recv()命令来检查数据。这种方法我之前试过,发现会消耗不少资源。
  • 我可以使用线程模块,但因为我对这个不太熟悉,所以尽量避免使用。不过,也许我最终还是得用上它。

希望能得到一些建议。

3 个回答

0

在文档中有一个叫做 wxKeyEvent 的东西。你可以用它来捕捉键盘按键,然后通过 Socket 发送这些按键信息到网络上,或者做你想做的任何事情!关于 Socket 的内容,可以参考 这个帖子。虽然是 C++ 的内容,但能帮助你更好地理解!

0

我不是wx方面的专家。你能不能用wx自带的事件驱动机制呢?按键肯定会产生一个事件。wx里有一个套接字类叫wxSocketClient(),它可以把一些底层的套接字事件(比如数据准备好了、连接关闭等等)转换成wx的事件。

1

wxPython确实有键盘事件。关于这个主题,你可以查看wxPython的文档页面: http://www.wxpython.org/docs/api/wx.KeyEvent-class.html

wxPython并不是把wxWidgets里的每一件事都封装起来。开发者觉得有些东西在Python里已经有很好的支持,所以没必要再封装一遍。比如说,Python本身就有很好的socket支持。

如果你想深入了解,可以看看Twisted框架。这里有几篇关于如何在wxPython中使用它的文章:

撰写回答