【问题标题】:Update turtle/gui while waiting for input python等待输入python时更新turtle/gui
【发布时间】:2014-05-13 00:20:47
【问题描述】:

我正在制作一个聊天程序,但我遇到了一个问题:屏幕只有在输入后才会更新。我正在使用 turtle 来显示聊天(我知道,turtle 对于这个目的并不是那么好,但它非常简单。)

这是我循环中的代码:

while True:    
    ind = userlist.index(user)
    if statlist[ind] == 'banned':
        print('You have been banned.')
        break
    word = input('>>> ')
    command(word)
    if word != '':
        chat = user + '(' + status + '): ' + word
        update_room(chat)
    refresh()

这里几乎所有东西都可以忽略,除了

word = input('>>> ')

refresh()

refresh() 是更新海龟室的内容。

我怎样才能让它打印出新的聊天,即使用户正在打字? 2个并排的while循环会起作用吗?

我承认我的程序组织得不是很好,为了解决这个问题,我可能不得不重写这个循环。 注意:我宁愿不导入任何东西,但如果需要导入,那么如果该模块预装了 python 那就太好了。

或者另一个问题:是否可以同时并行运行 2 个无限 while 循环?

【问题讨论】:

  • 您可能应该考虑使用tkinter 模块作为您应用程序的GUI 库。见Python chat client
  • 我知道,但 turtle 似乎运作良好。我现在唯一的问题是循环内的输入正在停止刷新()。
  • 这个问题有什么新的吗?

标签: python turtle-graphics


【解决方案1】:

所以我是 python 的新手,但我有一个非常重复的想法。您需要首先删除输入部分并制作大量这样的功能:

def key_a:
    global key_in
    key_in = key_in + 'a'
def key_b:
    global key_in
    key_in = key_in + 'b'
def key_c:
    global key_in
    key_in = key_in + 'c'

如果你的输入是输入,那么它会将它设置为单词并重置输入变量。

def key_enter:
    global key_in
    global word
    word = key_in
    key_in = ''

然后绑定您的输入(将“win”视为您的窗口变量。)

win.listen()
win.onkeypress(key_a, 'a')

对大写字母也一样。

win.onkeypress(caps_key_a, 'A')

如果这有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2016-05-03
    • 1970-01-01
    相关资源
    最近更新 更多