python - 写入文本时 Tkinter 在 MacOs 上不刷新

标签 python macos user-interface tkinter

我有一个小的 Tkinter 应用程序来显示一些串行通信。 它有两个文本组件(user_input 和日志)和一个“发送”按钮。

当按下“发送”时,user_input 中写入的任何内容都会发送到串行。

def send_clicked(self):
    data = self.user_input.get(1.0, END)[:-1] + '\0'
    self.serial.write(str(data))
    self.user_input.delete(1.0, END)

此外,此方法每 100 毫秒运行一次,以在日志文本组件中显示串行输出:

def read_serial(self):
    self.log.update()  # display input text
    self._read_character()
    self.after(100, self.read_serial)  # check serial again soon

def _read_character(self):
    c = self.serial.read()  # attempt to read a character from Serial
    # was anything read?
    while len(c) > 0:
        # get the buffer from outside of this function
        # check if character is a delimeter
        if c == '\r':
            c = ''  # don't want returns. chuck it
        if c == '\n':
            self.serial_buffer += "\n"  # add the newline to the buffer
            self.log.insert(END, self.serial_buffer)
            self.log.yview(END)
            self.serial_buffer = ""  # empty the buffer
        else:
            self.serial_buffer += c  # add to the buffer
        c = self.serial.read()

这在 windows、linux 和 mac 上工作正常。

现在我想在用户单击“发送”时在响应文本上打印“>> 值”,因此我重新定义了 send_clicked:

def send_clicked(self):
    data = self.user_input.get(1.0, END)[:-1] + '\0'
    self.serial.write(str(data))
    self.log.insert(END, '>> %s\n' % data)
    self.log.yview(END)
    self.user_input.delete(1.0, END)

这会导致窗口在 MacOS 中停止刷新(在 Linux 和 Windows 中工作正常),我必须在窗口外单击并单击返回才能刷新。现在我添加了一个菜单,我也可以点击菜单中的按钮来获取更新。

最佳答案

如果您运行的是 OSX 10.9 (Mavericks),很可能 this是问题。我建议更新您当前的 Tcl/Tk 版本,甚至更新到最新版本的 Python(特别是如果您仍在使用 3.3)。希望这对您有所帮助!

关于python - 写入文本时 Tkinter 在 MacOs 上不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22763195/

相关文章:

Python:嵌套列表中元素的索引列表

python - 正则表达式检查给定字符串是否为相对 URL

java - 为 Swing 库强制使用 EDT 线程

python - 按频率和值对列表进行排序

macos - 在没有 Docker 工具箱的情况下在 OSX 上安装 docker-machine

macos - 安装 zeromq MacOSX 时出现问题

macos - 具有嵌套相对宽度的自动布局性能?

java - 如何用循环使程序重置回开头

c# - WPF控件自定义设计

python - 如何在 Pandas 数据框中提取单个单词(不是包含它的更大单词)?