【问题标题】:tkinter and python3.x button configtkinter 和 python3.x 按钮配置
【发布时间】:2017-05-19 12:48:47
【问题描述】:

我正在尝试将字符串写入文本。这是代码:

def retrieve_input():
    inputValue = textBox.get("1.0", "end-1c")
    c = inputValue

    def open():
        f = open("writetest.txt", "a")

        def write_input():
            f.write(c)

filemenu.add_command(label="Write to txt", command=lambda:retrieve_input())

我尝试了很多方法但没有成功,整个代码很长而且真的不漂亮,我尝试学习有关编写和加载的命令。

【问题讨论】:

  • “不成功”是什么意思?是否写入了错误的数据?没有数据被写入?函数没有被调用吗?程序会崩溃吗?您是否检查过 c 方法中 c 的值,以验证它是否是您认为的值?这是retrieve_input 函数的所有代码吗?您定义了open,但没有调用它。

标签: python tkinter config


【解决方案1】:

我不确定你的缩进是否真的和你帖子中的一样,但这是一种更简洁的方式:

def retrieve_input():
    inputValue = textBox.get("1.0", "end-1c")
    c = inputValue

    with open("writetest.txt", "a") as f:
        f.write(c)

我摆脱了所有不必要的功能。另外,我选择使用with指令来处理文件。

此外,您的函数可能会更短:

def write_input():
    with open("writetest.txt", 'a') as f:
        f.write(textBox.get("1.0", "end-1c"))

请注意,您正在打开文件,但之后没有关闭它。这可能会导致内存泄漏。使用with 块可以保护您免受此类事情的影响,因为它会自动关闭文件。此外,在您的代码中,textBox 未定义,因此您需要将其作为参数传递,或将其声明为 global(避免使用后者)。

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多