Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的记事本类型程序中的复制/剪切/粘贴功能_Python_Notepad - Fatal编程技术网

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()
也将引发异常,因为它们未定义。