【问题标题】:How to save information in Tkinter? [duplicate]如何在 Tkinter 中保存信息? [复制]
【发布时间】:2020-08-24 00:45:09
【问题描述】:

我想从基于 Tkinter 的应用程序中将信息保存在文本文件中。

def SaveInfo():
    NameInfo = NameVar.get()
    SurnameInfo = SurnameVar.get()
    f = open('cv.txt', 'w')
    print (NameVar.get(), SurnameInfo)
    f.write(f'name - {NameInfo}')
    f.close()


NameVar = StringVar()
Label(MainInfo, text='Name ', padx=5, pady=5).grid(row=1, column=1)
Name = Entry(MainInfo, textvariable=NameVar).grid(row=1, columnspan=3,
        column=2)
SurnameVar = StringVar()
Label(MainInfo, text='Surname ', padx=5, pady=5).grid(row=2, column=1)
Surname = Entry(MainInfo, textvariable=SurnameVar).grid(row=2,
        columnspan=3, column=2)

Submit1 = Button(MainInfo, text='Submit',
                 command=SaveInfo()).grid(row=10, column=3)

当我在 Entry 中输入内容时,它既不打印也不保存任何信息。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    问题是您正在运行 Button 创建时的函数。去掉括号:

    Submit1 = Button(MainInfo, text = "Submit", command = SaveInfo).grid(row = 10, column = 3)
    

    希望对您有所帮助!

    【讨论】:

      【解决方案2】:

      问题是你马上打电话给SaveInfo

      ..., command = SaveInfo())...
      

      除非另有说明,否则函数会隐式返回 None,这相当于设置 command=None,它什么都不做。

      您只想引用处理函数,例如

      ..., command = SaveInfo)...
      

      所以当用户点击按钮时,Tk 会调用它。

      顺便说一句,您可能希望使用a(附加)模式而不是w(覆盖)模式进行写入:

      def SaveInfo():
          name = NameVar.get()
          surname = SurnameVar.get()
          with open('cv.txt', 'a') as f:
            print(f'name: {name} {surname}', file=f)
      

      【讨论】:

      • 天哪,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多