Python,Tkinter:将条目字段的内容存储到变量中

2024-10-01 22:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

亲爱的程序员朋友们

我在windows1064位上使用python2.7。在

我有一个Tkinter窗口的问题。在父程序中,我想保存一个文件,并在Tkinter窗口中询问该文件的名称。我的问题是我没能成功地把这个名字放在Tkinter窗口之外。下面是Python代码:

from Tkinter import *
globalFilename = ""    
class Master:
    def __init__(self, top):
        self.filename = ""
        frame_e = Frame(top)
        frame_e.pack()
        self.t_filename = StringVar()

        entry = Entry(frame_e, textvariable=self.t_filename, bg="white")
        entry.pack()
        entry.focus_force()

        saveButton = Button(frame_e, text="Save", command=self.on_button)
        saveButton.pack(side=BOTTOM, anchor=S)


    def on_button(self):
        self.filename = self.t_filename.get()
        print self.filename
        root.quit()
        root.destroy()        


root = Tk()
root.geometry("100x100+100+50")

M = Master(root)
print M.filename
root.mainloop( )
print M.filename
globalFilename = M.filename
print globalFilename

当我在Entry textbox中输入任何文本时,此代码中的所有print语句都不会给出任何内容。这不是我所期望的。如果我输入“test”,我希望每个print语句都出现“test”(即在这里出现四次)。我试着去互联网上的任何地方,我尝试过各种各样的教程,我试着复制各种各样的例子,去跟踪各种各样的视频,我只是没有成功地解决这个问题。在

请注意,这段代码嵌入到名为saveGame的函数中,该函数在pygame循环中使用。

提前谢谢!祝你一切顺利!在


Tags: 文件代码selfmastertkintertopdefroot
2条回答

好吧,正如其他海报所说,上面的代码在真空中工作。它不能像嵌入在我的程序中那样工作,因为我在调用函数并再次初始化之前初始化了一个重复的tk()。我删除了这个复制品,它成功了。在

你的代码有效。在

在调用mainloop()之前,窗口不会在屏幕上绘制,因此在该点之前打印M.filename会打印一个空字符串(初始化值)。mainloop()将一直阻塞,直到窗口关闭,之后3个print语句成功地打印用户输入到框中的值。在

您可能会对easygui模块感兴趣,它与您的程序完全相同,只是您不必自己制作它。在

相关问题 更多 >

    热门问题