Python 原始输入阻止GUI显示

Python 原始输入阻止GUI显示,python,tkinter,raw-input,Python,Tkinter,Raw Input,我用Python编写了一个程序,允许我一次更改许多文件的名称。我有一个问题很奇怪 当我使用raw_输入获得所需的扩展时,GUI将不会启动。我没有收到任何错误,但窗口将永远不会出现 我尝试使用raw_输入作为从用户获取文件扩展名的一种方式来构建文件列表。当未使用原始输入时,此程序将正常工作。我所指的代码部分位于我的globList函数中。由于某些原因,当使用原始输入时,窗口将不会启动 import os import Tkinter import glob from Tkinter import

我用Python编写了一个程序,允许我一次更改许多文件的名称。我有一个问题很奇怪

当我使用raw_输入获得所需的扩展时,GUI将不会启动。我没有收到任何错误,但窗口将永远不会出现

我尝试使用raw_输入作为从用户获取文件扩展名的一种方式来构建文件列表。当未使用原始输入时,此程序将正常工作。我所指的代码部分位于我的globList函数中。由于某些原因,当使用原始输入时,窗口将不会启动

import os
import Tkinter
import glob
from Tkinter import *

def changeNames(dynamic_entry_list, filelist):
    for index in range(len(dynamic_entry_list)):
        if(dynamic_entry_list[index].get() != filelist[index]):
            os.rename(filelist[index], dynamic_entry_list[index].get())

    print "The files have been updated!" 



def drawWindow(filelist):

    dynamic_entry_list = []
    my_row = 0
    my_column = 0
    for name in filelist:
        my_column = 0
        label = Tkinter.Label(window, text = name, justify = RIGHT)
        label.grid(row = my_row, column = my_column)

        my_column = 1
        entry = Entry(window, width = 50)
        dynamic_entry_list.append(entry)
        entry.insert(0, name)
        entry.grid(row = my_row, column = my_column)

        my_row += 1       
    return dynamic_entry_list


def globList(filelist):
    #ext = raw_input("Enter the file extension:")
    ext = ""
    desired = '*' + ext
    for name in glob.glob(desired):
        filelist.append(name)




filelist = []
globList(filelist)
window = Tkinter.Tk()
user_input = drawWindow(filelist)
button = Button(window, text = "Change File Names", command = (lambda      e=user_input: changeNames(e, filelist)))
button.grid(row = len(filelist) + 1 , column = 1)

window.mainloop()
这是原始输入的问题吗


解决这个问题的好办法是什么?

这就是tkinter的定义。它是单线程的,所以当它等待用户输入时,它确实在等待。mainloop必须运行,以便GUI能够响应事件,包括内部事件,例如在屏幕上绘制窗口的请求

一般来说,您不应该将GUI与从stdin读取输入混合使用。如果您正在创建GUI,请通过入口小部件从用户处获取输入。或者,在创建GUI之前获取用户输入


在effbot网站上可以找到一个关于弹出对话框的不错的教程:

您使用的是IDE吗?