Très bien, donc je suis this tutoriel sur les interfaces graphiques Python avec Tkinter
.Python: Tkinter bouton fonction et urllib2
Mon code est ci-dessous et tout fonctionne bien. Cependant, ce n'est pas exact puisque le programme ne fait pas ce dont j'ai réellement besoin.
Dans la zone GUI, je souhaite que l'utilisateur puisse fournir un lien qui sera ensuite utilisé à partir de urllib2
pour récupérer des liens du Web, puis les ouvrir via le menu déroulant de mon interface graphique. Jusqu'à présent, le lien que l'utilisateur est censé fournir est codé en dur dans la source et le bouton ne fait pratiquement rien.
Donc ce dont j'ai besoin ici, c'est de pouvoir connecter le bouton my avec response = urllib2.urlopen
?
Avez-vous pensé à cela? Merci beaucoup.
import urllib2
from Tkinter import *
#import tkinter.messagebox
#import turtle
#fetching uris from the web
response = urllib2.urlopen('http://www.website.com/..')
html = response.read()
with open("/path/to/URIs.txt", 'w') as outfile:
outfile.write(html)
def ChangeLabel():
response = urllib2.urlopen('http://www.website.com/..')
labelText.set(response)
#yourName.delete(0, END)
html = response.read()
#yourName.insert(0, html)
return
def aboutMe():
tkinter.messagebox.showinfo('Hello there!')
return
def openURIS():
f = open("/path/to/URIs.txt")
aboutStud.delete(1.0, END)
studGradeString = ""
for i in f:
studGradeString += i
aboutStud.insert(END, studGradeString)
f.close()
return
app = Tk()
app.title('Simple Tkinter GUI')
app.geometry('400x500')
menubar = Menu(app)
filemenu = Menu(menubar,tearoff=0)
filemenu.add_command(label="Open URIs", command=openURIS)
filemenu.add_separator()
filemenu.add_command(label="Quit", command=app.quit)
menubar.add_cascade(label="File", menu=filemenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_cascade(label="About us", command=aboutMe)
menubar.add_cascade(label="Help", menu=helpmenu)
app.config(menu=menubar)
aboutStud = Text(app)
aboutStud.insert(END, "Paste link into the little box to fetch URIs")
aboutStud.pack()
labelText = StringVar()
labelText.set('Click button below')
label1 = Label(app, textvariable=labelText, height=4)
label1.pack()
#checkBoxVal = IntVar()
#checkBox1 = Checkbutton(app, variable=checkBoxVal, text="Hello?")
#checkBox1.pack()
custom = StringVar(None)
legend = Entry(app, textvariable=custom)
legend.pack()
button1 = Button(app, text='Click to fetch URIs', width=20, command=ChangeLabel)
button1.pack(side='top', padx=15 , pady=15)
app.mainloop()
Il y a aussi beaucoup de lignes que je devrais changer ou même supprimer, mais je prévois de le faire une fois, je comprends mieux le code et comment cela fonctionne.
Mais vous avez déjà une connexion entre Button et function (avec la ligne 'response = urllib2.urlopen ('http://www.website.com/ ..')') parce que vous avez 'command = ChangeLabel' – furas
coller l'URL dans la boîte et cliquer sur le bouton ne fait qu'inviter une erreur. Je vais éditer et montrer dans ma question. Je sais qu'il y a déjà un lien entre les deux mais pas celui que je veux. C'est un désordre tbh – kapelnick
Alors mettez celui dans 'ChangeLabel' – furas