召唤狮 发表于 2020-11-18 13:28:13

无法点链接

from tkinter import *
root = Tk()
text = Text(root, width=30, height=5)
text.pack()
text.insert(INSERT, "I love FishC.com!")
text.tag_add("link", "1.7", "1.16")
text.tag_config("link", foreground="blue", underline=True)
def show_hand_cursor(event):
        text.config(cursor="arrow")
        def show_arrow_cursor(event):
                text.config(cursor="xterm")
                def click(event):
                        webbrowser.open("http://www.fishc.com")
                        text.tag_bind("link", "<Enter>", show_hand_cursor)
                        text.tag_bind("link", "<Leave>", show_arrow_cursor)
                        text.tag_bind("link", "<Button-1>", click)
                        mainloop()

为什么点不到链接?

笨鸟学飞 发表于 2020-11-18 17:09:33

本帖最后由 笨鸟学飞 于 2020-11-18 17:11 编辑

啥意思?把问题说清楚一点,你这缩进都乱成啥样了。代码能跑成功就有鬼了。
而且你的事件绑定也写的乱七八糟的。都不知道你想干啥。。{:10_285:}

建议
1、把自己的代码注释一下你想干啥
2、把问题描述清楚

gonff 发表于 2020-11-18 17:23:32

把你的缩进改了一下,然后我添加了一个import webbrowser。如下:
import webbrowser
from tkinter import *
root = Tk()
text = Text(root, width=30, height=5)
text.pack()
text.insert(INSERT, "I love FishC.com!")
text.tag_add("link", "1.7", "1.16")
text.tag_config("link", foreground="blue", underline=True)
def show_hand_cursor(event):
      text.config(cursor="arrow")
def show_arrow_cursor(event):
      text.config(cursor="xterm")
def click(event):
      webbrowser.open("http://www.fishc.com")
text.tag_bind("link", "<Enter>", show_hand_cursor)
text.tag_bind("link", "<Leave>", show_arrow_cursor)
text.tag_bind("link", "<Button-1>", click)
mainloop()

gonff 发表于 2020-11-18 17:25:04

缩进的问题。我改成正常缩进,可以正常运行。

import webbrowser
from tkinter import *
root = Tk()
text = Text(root, width=30, height=5)
text.pack()
text.insert(INSERT, "I love FishC.com!")
text.tag_add("link", "1.7", "1.16")
text.tag_config("link", foreground="blue", underline=True)
def show_hand_cursor(event):
      text.config(cursor="arrow")
def show_arrow_cursor(event):
      text.config(cursor="xterm")
def click(event):
      webbrowser.open("http://www.fishc.com")
text.tag_bind("link", "<Enter>", show_hand_cursor)
text.tag_bind("link", "<Leave>", show_arrow_cursor)
text.tag_bind("link", "<Button-1>", click)
mainloop()

gonff 发表于 2020-11-18 18:51:44

缩进的问题。
def show_hand_cursor(event):
      text.config(cursor="arrow")
def show_arrow_cursor(event):
      text.config(cursor="xterm")
def click(event):
      webbrowser.open("http://www.fishc.com")
      text.tag_bind("link", "<Enter>", show_hand_cursor)
      text.tag_bind("link", "<Leave>", show_arrow_cursor)
      text.tag_bind("link", "<Button-1>", click)
mainloop()
就没问题了。

gonff 发表于 2020-11-18 18:55:03

本帖最后由 gonff 于 2020-11-18 19:03 编辑

缩进的问题。把def开头的语句都移到开头,后面跟的也相应的前移。然后mainloop()也要移到行首处。缩进搞定了,光标就正常了。
然后还少了import webbrowser这一句。要不然无法打开网页。

感觉你可能是从别处复制过来的代码,以后要注意缩进。

gonff 发表于 2020-11-18 18:57:26

import webbrowser
from tkinter import *
root = Tk()
text = Text(root, width=30, height=5)
text.pack()
text.insert(INSERT, "I love FishC.com!")
text.tag_add("link", "1.7", "1.16")
text.tag_config("link", foreground="blue", underline=True)
def show_hand_cursor(event):
      text.config(cursor="arrow")
def show_arrow_cursor(event):
      text.config(cursor="xterm")
def click(event):
      webbrowser.open("http://www.fishc.com")
text.tag_bind("link", "<Enter>", show_hand_cursor)
text.tag_bind("link", "<Leave>", show_arrow_cursor)
text.tag_bind("link", "<Button-1>", click)
mainloop()

这个可以执行。也能进网页。

召唤狮 发表于 2020-11-19 15:12:26

gonff 发表于 2020-11-18 18:57
这个可以执行。也能进网页。

不好意思,我看书看漏了。为什么增加import webbrowser还是进不了网页?

gonff 发表于 2020-11-19 16:46:57

可能是要光标变形之后才可以。如果是文本输入形态的光标点了没用。因为这个时候他判定你没有点在link上。

召唤狮 发表于 2020-11-23 14:30:04

gonff 发表于 2020-11-19 16:46
可能是要光标变形之后才可以。如果是文本输入形态的光标点了没用。因为这个时候他判定你没有点在link上。

光标点到链接上面不变形。

gonff 发表于 2020-11-23 19:34:08

import webbrowser
from tkinter import *
root = Tk()
text = Text(root, width=30, height=5)
text.pack()
text.insert(INSERT, "I love FishC.com!")
text.tag_add("link", "1.7", "1.16")
text.tag_config("link", foreground="blue", underline=True)
def show_hand_cursor(event):
    text.config(cursor="arrow")
def show_arrow_cursor(event):
    text.config(cursor="xterm")
def click(event):
    webbrowser.open("http://www.fishc.com")
text.tag_bind("link", "<Enter>", show_hand_cursor)
text.tag_bind("link", "<Leave>", show_arrow_cursor)
text.tag_bind("link", "<Button-1>", click)
mainloop()

我直接复制代码,可以正常运行,光标会变化,也能打开网页。不过我发现缩进还有点细微的问题,你再试试这个吧!又改了两个缩进。

一个账号 发表于 2021-1-6 21:27:09

你这是什么缩进。。。而且没导入 webbrowser 模块

帮你改好了:

import webbrowser
from tkinter import *
root = Tk()
text = Text(root, width=30, height=5)
text.pack()
text.insert(INSERT, "I love FishC.com!")
text.tag_add("link", "1.7", "1.16")
text.tag_config("link", foreground="blue", underline=True)
def show_hand_cursor(event):
    text.config(cursor="arrow")
def show_arrow_cursor(event):
    text.config(cursor="xterm")
def click(event):
    webbrowser.open("http://www.fishc.com")
text.tag_bind("link", "<Enter>", show_hand_cursor)
text.tag_bind("link", "<Leave>", show_arrow_cursor)
text.tag_bind("link", "<Button-1>", click)
mainloop()
页: [1]
查看完整版本: 无法点链接