Python 如何加载tkinter的entry小部件中的url,该小部件与列表框中列表的已保存用户输入链接?

Python 如何加载tkinter的entry小部件中的url,该小部件与列表框中列表的已保存用户输入链接?,python,python-3.x,tkinter,listbox,Python,Python 3.x,Tkinter,Listbox,以下步骤描述了我的问题: 1.已打开的应用程序 2.键入的名称=迈克;id=11;url=www.google.com 3.单击“添加” 4.关闭应用程序 5.再次运行应用程序 6.在列表框中显示“Mike=11” 7.但当我选择“Mike=11”并点击“加载”时,它不会带我去“www.google.com”,为什么 请提供一些解决方案,说明如何打开带有已保存列表的URL。 请帮帮我 您需要使用两个列表。一个列表将数据保存在文件中,这可以在列表框中看到。另一个列表将url保存在文件中。这无法

以下步骤描述了我的问题:
1.已打开的应用程序
2.键入的名称=迈克;id=11;url=www.google.com
3.单击“添加”
4.关闭应用程序
5.再次运行应用程序
6.在列表框中显示“Mike=11”
7.但当我选择“Mike=11”并点击“加载”时,它不会带我去“www.google.com”,为什么
请提供一些解决方案,说明如何打开带有已保存列表的URL。
请帮帮我


您需要使用两个列表。一个列表将
数据保存在文件中,这可以在
列表框中看到。另一个列表将
url保存在文件中。这无法看到。您还需要同步它们。(
保存()
删除()
添加()
需要同时操作
列表框
小部件和
列表
)。一个简单的示例:

from tkinter import*
import webbrowser

def add():
    name = entry1.get()
    id = entry2.get()
    url = entry3.get()
    url_list.append(url)
    listbox.insert(END, name+ " : " +id)

def delete():
    select = listbox.curselection()
    index = select[0]
    url_list.pop(index)
    listbox.delete(index)

def save():
    with open("file.txt","w") as f:
        for i,j in zip(listbox.get(0,END),url_list):
            f.write(f"{i}  Url:{j}\n")

def load():
    select=listbox.curselection()
    index=select[0]
    load_url = url_list[index]
    webbrowser.open(load_url)

read = open("file.txt","r")
data_url_list = read.readlines()
read.close()
data_list = [data.rstrip().split("Url")[0] for data in data_url_list]
url_list = [data.rstrip().split("Url:")[1] for data in data_url_list]
win = Tk()
win.title("Class")

frame1=Frame(win)
frame2=Frame(win)
frame1.pack()
frame2.pack()

label1 = Label(frame1,text="Name : ")
label1.grid(row=0,column=0)

label2 = Label(frame1,text="Id : ")
label2.grid(row=1,column=0)

label3 = Label(frame1,text="Url : ")
label3.grid(row=2,column=0)

name = StringVar()
entry1 = Entry(frame1,textvariable=name)
entry1.grid(row=0,column=1)

id = StringVar()
entry2 = Entry(frame1,textvariable=id)
entry2.grid(row=1,column=1)

url = StringVar()
entry3 = Entry(frame1,textvariable=url)
entry3.grid(row=2,column=1)

scrollbar = Scrollbar(frame2,orient=VERTICAL)

listbox = Listbox(frame2,selectmode=EXTENDED,yscrollcommand=scrollbar.set,width=60)
listbox.pack()

scrollbar.config(command=listbox)

for item in data_list:
    listbox.insert(END,item)

button1 = Button(frame2,text="Add",command=add)
button1.pack()

button2 = Button(frame2,text="Delete",command=delete)
button2.pack()

button3 = Button(frame2,text="Save to File",command=save)
button3.pack()

button4 = Button(frame2,text="Load Url",command=load)
button4.pack()

win.mainloop()
在本例中,文件中的格式为:

name : id  Url:xxxxxx

您还可以使用另一种方式保存和读取它们。

您需要使用两个列表。一个列表在文件中保存
数据,这可以在
列表框中看到。另一个列表是在文件中保存
url
。这无法看到。您还需要同步它们。(
保存()
删除()
add()
需要同时操作
列表框
小部件和
列表
)。一个简单的示例:

from tkinter import*
import webbrowser

def add():
    name = entry1.get()
    id = entry2.get()
    url = entry3.get()
    url_list.append(url)
    listbox.insert(END, name+ " : " +id)

def delete():
    select = listbox.curselection()
    index = select[0]
    url_list.pop(index)
    listbox.delete(index)

def save():
    with open("file.txt","w") as f:
        for i,j in zip(listbox.get(0,END),url_list):
            f.write(f"{i}  Url:{j}\n")

def load():
    select=listbox.curselection()
    index=select[0]
    load_url = url_list[index]
    webbrowser.open(load_url)

read = open("file.txt","r")
data_url_list = read.readlines()
read.close()
data_list = [data.rstrip().split("Url")[0] for data in data_url_list]
url_list = [data.rstrip().split("Url:")[1] for data in data_url_list]
win = Tk()
win.title("Class")

frame1=Frame(win)
frame2=Frame(win)
frame1.pack()
frame2.pack()

label1 = Label(frame1,text="Name : ")
label1.grid(row=0,column=0)

label2 = Label(frame1,text="Id : ")
label2.grid(row=1,column=0)

label3 = Label(frame1,text="Url : ")
label3.grid(row=2,column=0)

name = StringVar()
entry1 = Entry(frame1,textvariable=name)
entry1.grid(row=0,column=1)

id = StringVar()
entry2 = Entry(frame1,textvariable=id)
entry2.grid(row=1,column=1)

url = StringVar()
entry3 = Entry(frame1,textvariable=url)
entry3.grid(row=2,column=1)

scrollbar = Scrollbar(frame2,orient=VERTICAL)

listbox = Listbox(frame2,selectmode=EXTENDED,yscrollcommand=scrollbar.set,width=60)
listbox.pack()

scrollbar.config(command=listbox)

for item in data_list:
    listbox.insert(END,item)

button1 = Button(frame2,text="Add",command=add)
button1.pack()

button2 = Button(frame2,text="Delete",command=delete)
button2.pack()

button3 = Button(frame2,text="Save to File",command=save)
button3.pack()

button4 = Button(frame2,text="Load Url",command=load)
button4.pack()

win.mainloop()
在本例中,文件中的格式为:

name : id  Url:xxxxxx

您还可以使用另一种方式保存和读取它们。

为什么不将url也放在文件和列表框中?您的url没有保存在您的文件中。在函数
save()
中删除
f.close()
(不需要使用
f.close()
使用
打开(xxx)
后,它将自动关闭此文件)@Devanhsoni我只想让listbox显示姓名和id。而且,每当我点击它时,它都会生成它的url。如果有其他方法可以执行,请通知我。@jizhaosama我可以将url保存在文件中而不显示在列表框中吗?@jizhaosama我知道了。非常感谢您解决:)非常感谢您的时间!!你为什么不把url放在文件和列表框中呢?你的url没有保存在你的文件中。在函数
save()
中删除
f.close()
(无需使用
f.close()
在使用
打开(xxx)
后,它会自动关闭此文件IO)。@devansoni我只想让列表框显示名称和id。而且,每当我点击它,它就会生成它的url。如果有其他方法可以执行,请通知我。@jizhaosama我可以将url保存在文件中而不显示在列表框中吗?@jizhaosama我知道了。非常感谢您解决:)非常感谢您的时间!!