用python实现的python IDE

项目: PYPython IDE

项目暂未完成(原创开源,允许复制)

但如果需要转载请标明原文

#main.py
def j(dm):#清除字符串末尾空格(行)
    while dm[len(dm)-1] in [" ","\n"</
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Jedi可以实现Python的智能代码补全、函数跳转、代码重构等功能,结合PyQt5可以实现一个简单的Python IDE。下面是一个简单的示例: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit from PyQt5.QtGui import QTextCursor import jedi class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.text_edit = QTextEdit(self) self.text_edit.cursorPositionChanged.connect(self.on_cursor_position_changed) self.setCentralWidget(self.text_edit) self.jedi_script = jedi.Script('', 1, 1, '') def on_cursor_position_changed(self): cursor = self.text_edit.textCursor() line_number = cursor.blockNumber() + 1 column_number = cursor.columnNumber() source_code = self.text_edit.toPlainText() self.jedi_script = jedi.Script(source_code, line_number, column_number, '') completions = self.jedi_script.completions() if completions: self.show_completions(completions) else: self.text_edit.clear() def show_completions(self, completions): cursor = self.text_edit.textCursor() cursor.movePosition(QTextCursor.StartOfWord) cursor.movePosition(QTextCursor.EndOfWord, QTextCursor.KeepAnchor) word_under_cursor = cursor.selectedText() completion_list = [c.name for c in completions if c.name.startswith(word_under_cursor)] self.text_edit.clear() self.text_edit.insertPlainText('\n'.join(completion_list)) if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_()) ``` 这个例子中,我们使用QTextEdit作为文本编辑器,利用jedi实现了在光标所在位置的代码自动补全功能。当光标位置改变时,我们先利用QTextEdit的textCursor方法获取光标位置,然后获取所在行、列的信息和整个代码,再使用jedi的Script类生成一个脚本对象,最后调用completions方法获取自动补全列表。我们将自动补全列表显示在QTextEdit中,方便用户选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值