从.txt文件检索输入

时间:2018-12-18 18:04:12

标签: python tkinter

使用下面的.txt文件,如何创建一个tkinter GUI,该GUI将使用txt文件并为每行代码创建一个新框架。是否可以在每个页面上为它们单独设置按钮?

#Hello.txt
 hi 
 hello
 here

1 个答案:

答案 0 :(得分:1)

通常,您想要一些代码示例,以了解您要尝试执行的操作以及在此处遇到的问题。

但是,这并不难想象,我感觉很想建立一个例子。

在这里,我创建了一个具有2个按钮和一个标签的GUI。我只是使用跟踪变量在下一个或上一个索引处更新标签。如果我到达列表的开头或列表的末尾,除了打印到控制台的按钮,按钮将不会执行任何操作。

该示例应为您要尝试做的事情打好基础。

我的main.py python文件和data.txt文件在同一目录中。

data.txt文件如下所示:

Row one in file.
Row two in file.
Row three in file.

代码是:

import tkinter as tk


class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.list_of_data_in_file = []
        self.ndex = 0
        with open("data.txt", "r") as data:
            # Readlines() will convert the file to a list per line in file.
            self.list_of_data_in_file = data.readlines()
        self.lbl = tk.Label(self, text=self.list_of_data_in_file[self.ndex])
        self.lbl.grid(row=0, column=1)

        tk.Button(self, text="Previous", command=self.previous).grid(row=0, column=0)
        tk.Button(self, text="Next", command=self.next).grid(row=0, column=2)

    def previous(self):
        # simple if statement to make sure we don't get errors when changing index on the list.
        if self.ndex != 0:
            self.ndex -= 1
            self.lbl.config(text=self.list_of_data_in_file[self.ndex])
        else:
            print("No previous index")

    def next(self):
        # simple if statement to make sure we don't get errors when changing index on the list.
        if self.ndex != (len(self.list_of_data_in_file) - 1):
            self.ndex += 1
            self.lbl.config(text=self.list_of_data_in_file[self.ndex])
        else:
            print("Reached end of list!")


if __name__ == "__main__":
    App().mainloop()