如何使用特定按钮打开 link? Tkinter

How to open a link with an specific button? Tkinter

基本上,当我想用​​特定按钮打开特定 link 时,它不起作用。当您单击第二个按钮时,它会打开函数内的所有 links。

from tkinter import *
import webbrowser

root = Tk()
root.title("links")
root.geometry("700x500")
root.config(bg="#3062C7")

def links_unit1():
    global vid_1, vid_2
    bg_v1 = Canvas(root, bg="#3062C7", width=700, height=500)
    bg_v1.place(x=0, y=0)

    vid_1 = Button(root, text="Virtual memory", command=all_vids1)
    vid_1.place(x=20, y=20)

    vid_2 = Button(root, text="lossy, lossless", command=all_vids1)
    vid_2.place(x=30, y=50)

def all_vids1():
    if vid_1:
        webbrowser.open("https://youtu.be/AMj4A1EBTTY")
    elif vid_2:
        webbrowser.open("https://youtu.be/v1u-vY6NEmM")

vid_unit1 = Button(root, text="Unit 1", command=links_unit1)
vid_unit1.place(x=10, y=10)

root.mainloop()

你不能通过检查 vid_1vid_2 的值来做到这一点,因为它们总是真实的。相反,您可以通过对 Buttoncommand= 选项使用 lambda 表达式来创建匿名函数“on-the-fly”,如下所示:

from tkinter import *
import webbrowser

root = Tk()
root.title("links")
root.geometry("700x500")
root.config(bg="#3062C7")

def links_unit1():
    bg_v1 = Canvas(root, bg="#3062C7", width=700, height=500)
    bg_v1.place(x=0, y=0)

    vid_1 = Button(root, text="Virtual memory",
                   command=lambda: webbrowser.open("https://youtu.be/AMj4A1EBTTY"))
    vid_1.place(x=20, y=20)

    vid_2 = Button(root, text="Lossy, Lossless",
                   command=lambda: webbrowser.open("https://youtu.be/v1u-vY6NEmM"))
    vid_2.place(x=30, y=50)


vid_unit1 = Button(root, text="Unit 1", command=links_unit1)
vid_unit1.place(x=10, y=10)

root.mainloop()