如何加载tkinter条目窗口小部件中的URL,该URL与列表框中列表的已保存用户输入链接? [英] How to load a url which is in entry widget of tkinter which is linked with saved user input of a list in list-box?

查看:54
本文介绍了如何加载tkinter条目窗口小部件中的URL,该URL与列表框中列表的已保存用户输入链接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题:
1.打开的应用程序
2.输入名称= Mike; id = 11; url = www.google.com
3.点击添加"
4.关闭应用程序.
5.再次运行该应用程序.
6.在列表框中显示"Mike = 11".
7.但是当我选择"Mike = 11"并单击"load"时,为什么我不能进入"www.google.com",为什么?
请给我一些有关如何打开带有已保存列表的URL的解决方案.
请帮助我!

My Problem is described in these following steps:
1. Opened Application
2. Typed name = Mike ; id = 11 ; url = www.google.com
3. Clicked on "Add"
4. Closed the application.
5. Again Run the application.
6. Shows "Mike = 11" in the list box.
7. But when I select "Mike = 11" and click on "load" , it does not take me to "www.google.com", Why?
Please give me some solutions about how can I open a URL attaching with saved list.
Please HELP me!!

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()

推荐答案

您需要使用两个列表.一个列表将data保存在文件中,这可以在Listbox中看到.另一个列表是保存文件中的url.这是看不到的,并且还需要同步它们.(save()delete()add()需要同时操作Listbox小部件和list).一个最小的例子.

You need to use two list.one list saves data in the file,this could be seen in the Listbox.The another list is to save the url in the file.this couldn't be seen.And also you need to synchronize them.(save(),delete(),add() need to operate both Listbox widget and the list).A minimal example.:

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()

在此示例中,文件中的格式:

In this example,the format in the file:

name : id  Url:xxxxxx

您还可以使用另一种方式保存它们并阅读它们.

You also could use another way to save them and read them.

这篇关于如何加载tkinter条目窗口小部件中的URL,该URL与列表框中列表的已保存用户输入链接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆