首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -打开文本编辑器并实时查看更新

Python -打开文本编辑器并实时查看更新
EN

Stack Overflow用户
提问于 2021-05-11 05:52:39
回答 1查看 45关注 0票数 0

我的程序的目的是在文本编辑器中记录按键,并用计时器实时显示。其功能类似于手动打开文本编辑器并键入,从而提供即时反馈。

下面的代码将按键记录到文本编辑器中,但只有在程序完成后才会显示输出。如何打开txt文件并实时显示按键和计时器值?

代码语言:javascript
复制
from tkinter import *
import time

import keyboard

root = Tk()
root.title('quick_data')

session_duration = IntVar()

def startSession():
    f = open("quick_data.txt", "a")
    for remaining in range(1, int(session_duration.get() + 1), +1):
        if (keyboard.is_pressed("a")):
            r = "{:2d} s".format(remaining) + " --> response 1"
        elif (keyboard.is_pressed("b")):
            r = "{:2d} s".format(remaining) + " --> response 2"
        else:
            r = "{:2d} s".format(remaining)
        f.write(r)
        f.write("\n")
        f.flush()
        time.sleep(1)

Label(root, text="Session duration").grid(row=1, sticky=W)
Entry(root, textvariable = session_duration).grid(row=1, column=1, sticky=E)

WSignUp = Button(root, text="Start Session", command=startSession).grid(row=3, column=0, sticky=W)
root.mainloop()
EN

回答 1

Stack Overflow用户

发布于 2021-05-11 07:42:20

您可以使用widget Text并直接写入widget。

当你在循环中运行代码时,它会阻塞tkinter。它等待函数结束后更新窗口中的内容。您需要使用root.update()来强制tkinter更新window中的内容。

代码语言:javascript
复制
from tkinter import *
import time
import keyboard

# --- functions ---  # PEP8: `lower_case_names` for functions

def start_session():
    
    for remaining in range(1, session_duration.get()+1, 1):
        
        if (keyboard.is_pressed("a")):
            r = "{:2d} s".format(remaining) + " --> response 1"
        elif (keyboard.is_pressed("b")):
            r = "{:2d} s".format(remaining) + " --> response 2"
        else:
            r = "{:2d} s".format(remaining)
            
        text.insert('end', r + '\n')
        root.update()
        
        time.sleep(1)

# --- main ---

root = Tk()
root.title('quick_data')

session_duration = IntVar(value=5)

Label(root, text="Session duration").grid(row=1, sticky=W)
Entry(root, textvariable = session_duration).grid(row=1, column=1, sticky=E)

WSignUp = Button(root, text="Start Session", command=start_session).grid(row=3, column=0, sticky=W)

text = Text(root)
text.grid(row=4, column=0, columnspan=2)

root.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67478092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档