• <legend id='BCUj7'><style id='BCUj7'><dir id='BCUj7'><q id='BCUj7'></q></dir></style></legend>

      <i id='BCUj7'><tr id='BCUj7'><dt id='BCUj7'><q id='BCUj7'><span id='BCUj7'><b id='BCUj7'><form id='BCUj7'><ins id='BCUj7'></ins><ul id='BCUj7'></ul><sub id='BCUj7'></sub></form><legend id='BCUj7'></legend><bdo id='BCUj7'><pre id='BCUj7'><center id='BCUj7'></center></pre></bdo></b><th id='BCUj7'></th></span></q></dt></tr></i><div id='BCUj7'><tfoot id='BCUj7'></tfoot><dl id='BCUj7'><fieldset id='BCUj7'></fieldset></dl></div>

      <small id='BCUj7'></small><noframes id='BCUj7'>

      <tfoot id='BCUj7'></tfoot>

          <bdo id='BCUj7'></bdo><ul id='BCUj7'></ul>
      1. 如何在等待套接字数据时使 tkinter 响应事件?

        时间:2023-10-09

          <bdo id='ZDQww'></bdo><ul id='ZDQww'></ul>

              • <i id='ZDQww'><tr id='ZDQww'><dt id='ZDQww'><q id='ZDQww'><span id='ZDQww'><b id='ZDQww'><form id='ZDQww'><ins id='ZDQww'></ins><ul id='ZDQww'></ul><sub id='ZDQww'></sub></form><legend id='ZDQww'></legend><bdo id='ZDQww'><pre id='ZDQww'><center id='ZDQww'></center></pre></bdo></b><th id='ZDQww'></th></span></q></dt></tr></i><div id='ZDQww'><tfoot id='ZDQww'></tfoot><dl id='ZDQww'><fieldset id='ZDQww'></fieldset></dl></div>

                <legend id='ZDQww'><style id='ZDQww'><dir id='ZDQww'><q id='ZDQww'></q></dir></style></legend>

                <small id='ZDQww'></small><noframes id='ZDQww'>

                    <tbody id='ZDQww'></tbody>

                  <tfoot id='ZDQww'></tfoot>
                  本文介绍了如何在等待套接字数据时使 tkinter 响应事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在尝试让应用程序从套接字读取数据,但它需要一些时间并锁定接口,我如何让它在等待时响应 tk 事件?

                  I'm trying to make the app read data from a socket, but it takes some time and locks the interface, how do I make it respond to tk events while waiting?

                  推荐答案

                  这很简单!你甚至不需要线程!但是你必须稍微重构你的 I/O 代码.Tk 与 Xt 的 XtAddInput() 调用等效,它允许您注册一个回调函数,当文件描述符上可以进行 I/O 时,该回调函数将从 Tk 主循环中调用.这是您需要的:

                  Thats is easy! And you don’t even need threads! But you’ll have to restructure your I/O code a bit. Tk has the equivalent of Xt’s XtAddInput() call, which allows you to register a callback function which will be called from the Tk mainloop when I/O is possible on a file descriptor. Here’s what you need:

                  from Tkinter import tkinter
                  tkinter.createfilehandler(file, mask, callback)
                  

                  该文件可能是 Python 文件或套接字对象(实际上,任何具有 fileno() 方法的对象)或整数文件描述符.掩码是常量 tkinter.READABLE 或 tkinter.WRITABLE 之一.回调调用如下:

                  The file may be a Python file or socket object (actually, anything with a fileno() method), or an integer file descriptor. The mask is one of the constants tkinter.READABLE or tkinter.WRITABLE. The callback is called as follows:

                  callback(file, mask)
                  

                  您必须在完成后取消注册回调,使用

                  You must unregister the callback when you’re done, using

                  tkinter.deletefilehandler(file)
                  

                  注意:由于您不知道有多少字节可供读取,因此您不能使用 Python 文件对象的 read 或 readline 方法,因为它们会坚持读取预定义的字节数.对于套接字,recv() 或 recvfrom() 方法可以正常工作;对于其他文件,请使用 os.read(file.fileno(), maxbytecount).

                  Note: since you don’t know how many bytes are available for reading, you can’t use the Python file object’s read or readline methods, since these will insist on reading a predefined number of bytes. For sockets, the recv() or recvfrom() methods will work fine; for other files, use os.read(file.fileno(), maxbytecount).

                  这篇关于如何在等待套接字数据时使 tkinter 响应事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:“之后"无限循环:从不进入主循环 下一篇:PyQt 中的 QKeyPress 事件

                  相关文章

                  最新文章

                1. <i id='H3qNG'><tr id='H3qNG'><dt id='H3qNG'><q id='H3qNG'><span id='H3qNG'><b id='H3qNG'><form id='H3qNG'><ins id='H3qNG'></ins><ul id='H3qNG'></ul><sub id='H3qNG'></sub></form><legend id='H3qNG'></legend><bdo id='H3qNG'><pre id='H3qNG'><center id='H3qNG'></center></pre></bdo></b><th id='H3qNG'></th></span></q></dt></tr></i><div id='H3qNG'><tfoot id='H3qNG'></tfoot><dl id='H3qNG'><fieldset id='H3qNG'></fieldset></dl></div>

                2. <legend id='H3qNG'><style id='H3qNG'><dir id='H3qNG'><q id='H3qNG'></q></dir></style></legend>
                  <tfoot id='H3qNG'></tfoot>
                    • <bdo id='H3qNG'></bdo><ul id='H3qNG'></ul>

                    1. <small id='H3qNG'></small><noframes id='H3qNG'>