python中自带的IDLE行数设置方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在 Text 组件左侧插入一个 LineNumber 类型的 Text 组件来实现显示行号。 以下是示例代码: ```python import tkinter as tk class LineNumber(tk.Text): def __init__(self, *args, **kwargs): tk.Text.__init__(self, *args, **kwargs) self.config(state="disabled", padx=4) def update(self, first, last): self.config(state="normal") self.delete(1.0, "end") for i in range(first, last): self.insert("end", f"{i}\n") self.config(state="disabled") class MainApplication(tk.Frame): def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) self.text_widget = tk.Text(self, padx=4) self.text_widget.pack(side="right", fill="both", expand=True) self.text_widget.bind("<Key>", self.update_line_numbers) self.linenumbers = LineNumber(self, width=4) self.linenumbers.pack(side="left", fill="y") self.scrollbar = tk.Scrollbar(self.text_widget) self.scrollbar.pack(side="right", fill="y") self.text_widget.config(yscrollcommand=self.scrollbar.set) self.scrollbar.config(command=self.text_widget.yview) self.update_line_numbers() def update_line_numbers(self, event=None): first, last = self.text_widget.yview() first = int(first * self.text_widget.index("end-1c").split(".")[0]) last = int(last * self.text_widget.index("end-1c").split(".")[0]) self.linenumbers.update(first, last) if __name__ == "__main__": root = tk.Tk() app = MainApplication(root) app.pack(side="top", fill="both", expand=True) root.mainloop() ``` 在这个示例,我们创建了一个名为 LineNumber 的类,它继承自 Text 类,并且添加了一个 update 方法,用于更新行号。 在 MainApplication 类,我们创建了一个 Text 组件和一个 LineNumber 组件,并将它们都放置在一个 Frame 。我们还创建了一个 Scrollbar 组件,并将其与 Text 组件关联起来。在 update_line_numbers 方法,我们获取当前 Text 组件的可视区域(即首行和尾行),然后调用 LineNumber 的 update 方法来更新行号。 在主函数,我们创建了一个 Tkinter 窗口,并将 MainApplication 放置在其,然后启动主循环。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值