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

光辉的达纳尼

我的问题在以下步骤中描述:
1. 打开应用程序
2. 键入 name = Mike ;id = 11 ; url = www.google.com
3. 点击“添加”
4. 关闭应用程序。
5. 再次运行应用程序。
6. 在列表框中显示“Mike = 11”。
7. 但是当我选择“Mike = 11”并点击“load”时,它并没有带我到“www.google.com”,为什么?
请给我一些有关如何打开带有已保存列表的 URL 的解决方案。
请帮我!!

错误截图

from tkinter import*
import webbrowser

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

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

def save():
    with open("file.txt","w") as f:
        for i in listbox.get(0,END):
            f.write(i+"\n")
            #f.close()

def load():
    url = entry3.get()
    select=listbox.curselection()
    index=select[0]
    webbrowser.open(index)

read = open("file.txt","r")
data_list = read.readlines()
read.close()
data_list = [data.rstrip() for data in data_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()
jizhihaoSAMA

您需要使用两个list.one列表保存data在文件中,这可能在可见Listbox.The另一个列表中保存url的文件。这个不能seen.And还需要将它们进行同步。( ,需要同时操作小部件和)。一个最小的例子。:save()delete()add()Listboxlist

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

您也可以使用另一种方式来保存和阅读它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章