Tkinter销毁和文件读取

时间:2015-04-19 17:06:32

标签: python file tkinter destroy

我被指派在大学里为我的python课做一个项目,我们应该为商店做一个程序,但我一直在与tkinter有一些问题。我已经完成了一个主菜单,用户可以在那里注册为买家,并且还可以购买。我完成了注册窗口,但是我需要按钮不仅可以运行我已创建的另一个功能,该功能可以保存用户在列表中输入的数据,还可以销毁窗口。有没有办法让按钮运行2个命令? 这是我所拥有的一个例子:

def get_data(l):
    l.append(box1.get())
    l.append(box2.get())
    l.append(box3.get())
    l.append(box4.get())
def register():
    global box1
    global box2
    global box3
    global box4
    #code defining window and each label and each input box
    botonA= Button(registerwindow, text = "accept",command=lambda: get_data(mylist), width=5)
    botonA.grid(row=0,column=2)

如何指定按钮不仅可以运行get_data函数,还可以关闭窗口?

我的第二个问题是如何在tkinter中打开或导入文件,我已经搜索过,我得到的是如何让用户打开文件,在我们的程序中,我们已经编辑了包含所需信息的文件,我们只需要获取和使用这些文件中的数据(商店中的商品,有多少库存,价格等),有没有办法导入文件而无需用户选择它?

感谢。 (对不起,如果我没有发布任何代码,我的大多数变量和东西都是西班牙语,所以我尽量避免翻译,但如果你们需要样本,我会很乐意递送)

1 个答案:

答案 0 :(得分:0)

只需将您想要destroy()的窗口的引用作为函数的参数传递:

def mywindow():
    topwindow = Toplevel()
    button = Button(topwindow, text='ok', command=lambda: okbutton(topwindow, mylist))

def okbutton(widget, l):
    l.append('hello world')
    widget.destroy()

至于在不要求用户选择文件的情况下打开文件,您只需对其中的值进行硬编码,而不是使用input()之类的内容:

# filename = input('filename? ')
filename = 'input_data.txt'
with open(filename, 'r') as f:
    pass # process file