Tkinterscript werkt nog niet naar behoren

Pagina: 1
Acties:
  • 578 views

Vraag


Acties:
  • +1 Henk 'm!

  • verbatim
  • Registratie: November 2010
  • Laatst online: 17-01-2024
Ik ben nu enige tijd bezig met het leren van python en Tkinter.
Nu heb ik een python Tkinterscript op github gevonden exact wat ik zelf wilde.
Er zaten wel wat typefouten in die ik gecorrigeerd heb.
Maar het werkt nog niet zoals ik wilde.
De bedoeling is dat het script de linenummer in de Gui print als ook de zin van het gezochte woord uit mijn tekstfile in de Gui print. Ik heb al verschillende pogingen gedaan om het script werkend te krijgen maar is mij helaas nog niet gelukt.
Misschien is er iemand die ervaren is met Tkinter die dit probleem van mij kan oplossen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# -*- coding: utf-8 -*-
 
from tkinter import *
import tkinter as tk
import re
 
def find():
    word = entry.get() 
    filename = ("info.txt") 
    fin=open(filename,'r')
     
        for line in fin:
           
        line = line.rstrip()
        worde=re.findall("\S+"+word+"\S+|"+word+"\S+|"+"\S+"+word,line)
          
    result.configure(text=worde)
    result2.configure(text="Number: "+str(len(worde)))
        
    #Basic interface with Tkinter
root = tk.Tk()
 
root.title("Find Word")
root.geometry('800x300')
 
wordTK=tk.Label(text="Word:")
wordTK.grid(row=0,column=0)
 
entry=tk.Entry()
entry.grid(row=0,column=1)
  
button = tk.Button(text='Bul', command=find)
button.grid(row=1,column=1)
 
result=tk.Label(text="  ")
result.grid(row=2,column=1)
 
result2=tk.Label(text="  ")
result2.grid(row=3,column=1)
 
root.mainloop()


...

[ Voor 0% gewijzigd door verbatim op 22-08-2020 13:59 . Reden: code stond niet goed ]

Alle reacties


Acties:
  • +3 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 12:05

Dogooder

dus...

Je bent niet heel duidelijk in wat het wel doet en wat het niet doet.
Snelle blik: waarom staat de laatste root.mainloop() op een indent? Python is hier gevoelig voor.

Acties:
  • 0 Henk 'm!

  • verbatim
  • Registratie: November 2010
  • Laatst online: 17-01-2024
Dogooder schreef op zaterdag 22 augustus 2020 @ 13:37:
Je bent niet heel duidelijk in wat het wel doet en wat het niet doet.
Snelle blik: waarom staat de laatste root.mainloop() op een indent? Python is hier gevoelig voor.
Ik heb toch duidelijk kenbaar gemaakt dat de linenummer wel wordt geprint maar de zin van het gezochte word niet in de Gui. En ik vroeg ook om iemand die ervaren is om mij hiermee te helpen. Als je dus niet ervaren bent wil ik ook liever niet dat er op dit topic gereageerd wordt.

Acties:
  • +2 Henk 'm!

  • hans013
  • Registratie: April 2017
  • Laatst online: 05-09 15:09
Goede reactie, zo zal je snel geholpen worden...
Overigens is de reactie van @Dogooder zeker gespeend met enige kennis.

Acties:
  • +1 Henk 'm!

  • Daedalus
  • Registratie: Mei 2002
  • Niet online

Daedalus

Moderator Apple Talk

Keep tryin'

Het script wat je hebt geplaatst gaat sowieso niet werken, want de indenting klopt niet:
File "verbatim.py", line 12
for line in fin:
^
IndentationError: unexpected indent
Afgezien daarvan bereken of houd je niet bij op welk regelnummer je het woord gevonden hebt, of probeer je dit uit te printen. Wat had je al geprobeerd om dit voor elkaar te krijgen?

“You know what I've noticed Hobbes? Things don't bug you if you don't think about them. So from now on, I simply won't think about anything I don't like, and I'll be happy all the time!” | 宇多田ヒカル \o/


Acties:
  • 0 Henk 'm!

  • verbatim
  • Registratie: November 2010
  • Laatst online: 17-01-2024
hans013 schreef op zaterdag 22 augustus 2020 @ 13:53:
Goede reactie, zo zal je snel geholpen worden...
Overigens is de reactie van @Dogooder zeker gespeend met enige kennis.
Het blijkt wel weer dat op dit forum mensen altijd moeten zeuren. En nogmaals ik heb liever reacties van mensen die ervaren zijn met Tkinter en geen meuk

Acties:
  • 0 Henk 'm!

  • verbatim
  • Registratie: November 2010
  • Laatst online: 17-01-2024
Daedalus schreef op zaterdag 22 augustus 2020 @ 13:58:
Het script wat je hebt geplaatst gaat sowieso niet werken, want de indenting klopt niet:

[...]


Afgezien daarvan bereken of houd je niet bij op welk regelnummer je het woord gevonden hebt, of probeer je dit uit te printen. Wat had je al geprobeerd om dit voor elkaar te krijgen?
Dan is er iets fout gegaan met het pasten op dit forum. Bij mij werkt het wel aleen krijg ik de regelummer 0 te zien in de Gui maar geen gevonden zin uit mijn tekstfile die in de Gui zou moeten printen

Acties:
  • +1 Henk 'm!

  • Luxicon
  • Registratie: Oktober 2010
  • Laatst online: 18-07-2021
verbatim schreef op zaterdag 22 augustus 2020 @ 14:04:
[...]

Dan is er iets fout gegaan met het pasten op dit forum. Bij mij werkt het wel aleen krijg ik de regelummer 0 te zien in de Gui maar geen gevonden zin uit mijn tekstfile die in de Gui zou moeten printen
Maar je vraagt om de oplossing. Hoe kan iemand de oplossing geven, als blijkbaar de kopie die je hier hebt geplakt niet klopt (volgens jezelf)? Oja, ik zie dat je je een update gedaan hebt (met als reden de code niet goed geplakt is).

[ Voor 8% gewijzigd door Luxicon op 22-08-2020 14:08 ]

...


Acties:
  • 0 Henk 'm!

  • Daedalus
  • Registratie: Mei 2002
  • Niet online

Daedalus

Moderator Apple Talk

Keep tryin'

verbatim schreef op zaterdag 22 augustus 2020 @ 14:01:
[...]

Het blijkt wel weer dat op dit forum mensen altijd moeten zeuren. En nogmaals ik heb liever reacties van mensen die ervaren zijn met Tkinter en geen meuk
Je kunt beter dit soort reacties achterwege laten, en eventueel een topic report aanmaken. Op deze manier reageren lokt alleen maar nog meer 'zeurende' reacties uit.
verbatim schreef op zaterdag 22 augustus 2020 @ 14:04:
[...]

Dan is er iets fout gegaan met het pasten op dit forum. Bij mij werkt het wel aleen krijg ik de regelummer 0 te zien in de Gui maar geen gevonden zin uit mijn tekstfile die in de Gui zou moeten printen
Kun je het juiste script hier posten dan? En een voorbeeld van de data die je invoert, de verwachte uitkomst, en de werkelijk uitkomst is vaak ook handig om te vermelden.

“You know what I've noticed Hobbes? Things don't bug you if you don't think about them. So from now on, I simply won't think about anything I don't like, and I'll be happy all the time!” | 宇多田ヒカル \o/


Acties:
  • 0 Henk 'm!

  • dogtagz
  • Registratie: December 2014
  • Laatst online: 20-09 18:41
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import tkinter as tk
import re

def find():
    word = entry.get()
    filename = ("info.txt")
    fin = open(filename, 'r')

    for line in fin:
        line = line.rstrip()
        worde = re.findall("\S+" + word + "\S+|" + word + "\S+|" + "\S+" + word, line)
        print(line, ': ', worde)


    result.configure(text=worde)
    result2.configure(text="Number: " + str(len(worde)))

# Basic interface with Tkinter
root = tk.Tk()

root.title("Find Word")
root.geometry('800x300')

wordTK = tk.Label(text="Word:")
wordTK.grid(row=0, column=0)

entry = tk.Entry()
entry.grid(row=0, column=1)

button = tk.Button(text='Bul', command=find)
button.grid(row=1, column=1)

result = tk.Label(text="  ")
result.grid(row=2, column=1)

result2 = tk.Label(text="  ")
result2.grid(row=3, column=1)

root.mainloop()


Je indentatie klopte niet op regel 10 (for loop moest één tab terug). Dan werkt de code inderdaad.
Ook heb je dubbele imports, die heb ik even weggehaald ( "From tkinter import *" en "import tkinter as tk" doen hetzelfde).

Probeer het zo ééns, dan heb je twee print statements erbij en zie je wat de variabele "line" en "worde" zijn.

Tip: Vermijd regex (tenzij je zelf er extreem comfortabel mee bent). Dat is echt onduidelijke bende. Python kan dit veel handiger en maakt je code ook makkelijker.

Offtopic: Wat een zeurende mensen over een simpele copy paste in Python? Als je de code wilt proberen van TS, dan is die tab zelf fixen ook geen probleem...

$ alias cd='rm -rf'


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20-09 20:56

Creepy

Tactical Espionage Splatterer

En reacties zoals die van @dogtagz is nu iet wat we liever niet zien. De TS geeft in zijn topicstart niet eens aan wat er nu niet goed gaat, alleen maar wat ie wil, en of iemand met kennis van Python z'n script kan fixen. EN wordt vervolgens inderdaad op z'n wenken bedient door de reactie van dogtagz. Dat wordt (weer) gekopieerd geplakt en dan zien we vaak dat de TS er nauwelijks zelf iets van leert.

Als je een topic opent dan staan daar standaard al een paar vragen. Melden dat je "van alles" hebt geprobeerd zegt ons uiteindelijk helemaal niks. Wat heb je dan geprobeerd? Welke code heb je dan aangepast naat wat? Kreeg je een foutmelding? Zo ja welke. Kreeg je een verkeerde uitkomst? Zo ja, wat was dat dan. Allemaal informatie die je nu achterwege laat maar die we wel van je verwachten. Ik ga je topic dan ook sluiten omdat je informatie niet geeft, en zelfs niet wil geven als er naar gevraagd wordt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.