好吧,我一直在尝试用Tkinter创建一个小的文本编辑器。我碰到一个问题,似乎找不到答案。如果有人能帮我,我会很高兴的。在
首先,我的代码是:
import tkinter as tk
import tkinter.filedialog as tkfile
class PyTedi(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
# Instantiate Menu
main_menu = tk.Menu(self)
menu_bar = PyTediMenu(main_menu)
main_menu.add_cascade(label='File', menu=menu_bar)
self.config(menu=main_menu)
# Instantiate Text Area
text_area = PyTediTextArea(self)
text_area.pack(side=tk.BOTTOM)
# Instantiate Tool Bar
tool_bar = PyTediToolBar(self)
tool_bar.pack(side=tk.TOP)
class PyTediMenu(tk.Menu):
def __init__(self, parent):
tk.Menu.__init__(self, parent)
self.add_command(label='New', command=None)
self.add_command(label='Open', command=None)
self.add_command(label='Save', command=tkfile.asksaveasfile)
self.add_separator()
self.add_command(label='Exit', command=self.quit)
class PyTediToolBar(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent, height=30)
class PyTediTextArea(tk.Text):
def __init__(self, parent):
tk.Text.__init__(self, parent)
if __name__ == '__main__':
app = PyTedi()
app.mainloop()
基本上,我发现,(从另一个堆栈问题)创建基于类的组件是个好主意。。。我的问题是,假设我想创建一个命令->保存文件。所以我在菜单中创建了一个方法并链接到save函数。但是,如何获取文本区域内容并将其写入文件?他们甚至不是同一个阶级的一部分。这是一个糟糕的设计实现还是只有我? 谢谢!在
虽然使用基于类的编程是一个好主意,但我想指出的是,除非您以某种方式修改小部件,否则子类化是完全没有必要的,当您创建类
PyTediTextArea
时,您实际上并没有以任何方式修改原始的文本类,因此您只需更改它会更简单到
^{pr2}$这样您就可以在底部保存自己的子类化,并且可以从主类中的任何地方调用它
获取小部件中的所有文本
詹姆斯
相关问题 更多 >
编程相关推荐