前言
最近我比较闲写了一个idle的小plus,发出来分享一下
- 拖动文字(内)
- 拖动文字(外)
- 拖拽打开文件
原理
就是动态打补丁,在导入idle之前就“升级”一下,同时不影响其他效果(包括运行的程序),用到了我之前写的TkContentMoveAndCopyableText,当然,改名为TextPlus并加上了drop部分
实现
idlelib
idlelib.pyshell有一个PyShell,包含方法open可以用idle打开文件。
PATH = "你的文件"
import tkinter
root = tk.Tk()
import idlelib.pyshell
flist = idlelib.pyshell.PyShell(root)
flist.open(PATH)
root.mainloop()
TkinterDnD2
这个模块可以让你的tkinter跨进程支持拖拽。
def _bind_dnd(self):
self.drop_target_register(DND_FILES, DND_TEXT)
self.dnd_bind("<<Drop>>",self._drop)
def _drop(self,e):
data = e.data
if os.path.exists(data):
import idlelib.pyshell
flist = idlelib.pyshell.PyShellFileList(self.master)
flist.open(data)
else:
self.insert("current",data)
源码
# main.py
import tkinter
try:
from TkinterDnD2 import *
root = TkinterDnD.Tk()
root.withdraw()
def