Python 我的记事本类型程序中的复制/剪切/粘贴功能
我正在编写记事本类型的程序,无法使用复制、粘贴和剪切功能。我似乎想不出代码出了什么问题。我查看了许多修改代码的源代码,并得出以下结论Python 我的记事本类型程序中的复制/剪切/粘贴功能,python,notepad,Python,Notepad,我正在编写记事本类型的程序,无法使用复制、粘贴和剪切功能。我似乎想不出代码出了什么问题。我查看了许多修改代码的源代码,并得出以下结论 from tkinter import * #Class class Edit(): def __init__(self): textbox.__init__(self) self.bind('<Control-c>', self.copy) self.bind('<Control-x&g
from tkinter import *
#Class
class Edit():
def __init__(self):
textbox.__init__(self)
self.bind('<Control-c>', self.copy)
self.bind('<Control-x>', self.cut)
self.bind('<Control-v>', self.paste)
def copy(self):
self.clipboard_clear()
textbox = self.get("sel.first", "sel.last")
self.clipboard_append(text)
def cut(self):
self.copy()
self.delete("sel.first", "sel.last")
def paste(self):
textbox = self.selection_get(selection='CLIPBOARD')
self.insert('insert', text)
从tkinter导入*
#阶级
类编辑():
定义初始化(自):
文本框。\uuuu初始化\uuuuuu(自)
self.bind(“”,self.copy)
自我绑定(“”,自我剪切)
self.bind(“”,self.paste)
def副本(自我):
self.clipboard_clear()
textbox=self.get(“sel.first”、“sel.last”)
self.clipboard\u append(文本)
def切割(自):
self.copy()
自我删除(“选择第一个”、“选择最后一个”)
def粘贴(自):
textbox=self.selection\u get(selection='CLIPBOARD')
self.insert('insert',text)
这些是编辑功能。
下面是程序的其余部分
#root window
edit = Edit
root = Tk()
root.title("Note")
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
textbox = Text(root, yscrollcommand=scrollbar.set)
textbox.pack(side=LEFT, fill=BOTH)
#Menu Bar
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=New)
filemenu.add_command(label="Open", command=Open)
filemenu.add_command(label="Save", command=Save)
filemenu.add_command(label="Save as...", command=Save_as)
filemenu.add_command(label="Close", command=Close)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Undo", command=Undo)
editmenu.add_separator()
editmenu.add_command(label="Cut", command=edit.cut)
editmenu.add_command(label="Copy", command=edit.copy)
editmenu.add_command(label="Paste", command=edit.paste)
editmenu.add_command(label="Select All", command=Select_All)
menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=Help_Index)
helpmenu.add_command(label="About...", command=About)
menubar.add_cascade(label="Help", menu=helpmenu)
root.config(menu=menubar)
#Popup menu
menu = Menu(root, tearoff=0)
menu.add_command(label="Copy", command=edit.copy)
menu.add_command(label="Paste", command=edit.paste)
def popup(event):
menu.post(event.x_root, event.y_root)
textbox.bind("<Button-3>", popup)
root.mainloop()
#根窗口
编辑
root=Tk()
根标题(“注释”)
滚动条=滚动条(根)
滚动条.pack(侧=右,填充=Y)
textbox=Text(根,yscrollcommand=scrollbar.set)
textbox.pack(侧边=左侧,填充=两侧)
#菜单栏
菜单栏=菜单(根)
filemenu=Menu(menubar,tearoff=0)
filemenu.add_命令(label=“New”,command=New)
filemenu.add_命令(label=“Open”,command=Open)
filemenu.add_命令(label=“Save”,command=Save)
filemenu.add_命令(label=“另存为…”,command=另存为)
filemenu.add_命令(label=“Close”,command=Close)
filemenu.add_separator()
filemenu.add_命令(label=“Exit”,command=root.quit)
menubar.add_级联(label=“File”,menu=filemenu)
编辑菜单=菜单(菜单栏,TEAROF=0)
编辑菜单.添加命令(label=“Undo”,command=Undo)
编辑菜单。添加分隔符()
编辑菜单.添加命令(label=“Cut”,command=edit.Cut)
editmenu.add_命令(label=“Copy”,command=edit.Copy)
editmenu.add_命令(label=“Paste”,command=edit.Paste)
编辑菜单。添加命令(label=“全选”,command=全选)
菜单栏.add_级联(label=“Edit”,menu=editmenu)
帮助菜单=菜单(菜单栏,TEAROF=0)
helpmenu.add_命令(label=“Help Index”,command=Help_Index)
帮助菜单.添加命令(label=“About…”,command=About)
菜单栏.add_级联(label=“Help”,menu=helpmenu)
root.config(menu=menubar)
#弹出菜单
菜单=菜单(根,tearoff=0)
菜单.添加命令(label=“Copy”,command=edit.Copy)
菜单.添加命令(label=“粘贴”,command=edit.Paste)
def弹出窗口(事件):
menu.post(event.x_root,event.y_root)
textbox.bind(“,弹出窗口)
root.mainloop()
运行完整程序会返回一个错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
return self.func(*args)
TypeError: **<<paste,copy or cut>>**() missing 1 required positional argument: 'self'
Tkinter回调中出现异常
回溯(最近一次呼叫最后一次):
文件“C:\Python33\lib\tkinter\\ uuuuu init\uuuuu.py”,第1475行,在调用中__
返回self.func(*args)
TypeError:***()缺少1个必需的位置参数:“self”
我正在使用windows 8运行python 3.3.3。不确定这是否有帮助,但您的代码在python 2中运行良好。如果您像这样实例化编辑类:Edit=Edit(),是否仍然失败?更改为Edit=Edit()会出现错误:回溯(最近一次调用):文件“C:\Python33\notepad.py”,第67行,在Edit=Edit()文件“C:\Python33\notepad.py”的第6行,在init文本框中。\uu init\uuu(self)NameError:未定义全局名称“textbox”
NameError
是因为尚未创建名为textbox
的全局名称。在创建textbox之后,我将类移动到,并移动了edit=edit()在类之后,但我现在得到了错误:AttributeError:'Edit'对象没有属性'tk'@user3389913:您不应该调用textbox.\uuuu init\uuuuu(self)
,除非您的类是textbox
的子类,假设textbox
是一个类self.clipboard\u clear()
、self.clipboard\u append()
和self.selection\u get()
也将引发异常,因为它们未定义。