使用下面的.txt文件,如何创建一个tkinter GUI,该GUI将使用txt文件并为每行代码创建一个新框架。是否可以在每个页面上为它们单独设置按钮?
#Hello.txt
hi
hello
here
答案 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()