0

Question has been updated since I've received an answer. The question that now raises is how to get the values from the csv file when I have two "Players" next to each other.

from Tkinter import * import csv

master = Tk()

b1 = StringVar()
v1 = StringVar()
v2 = StringVar()
v3 = StringVar()

b2 = StringVar()
v4 = StringVar()
v5 = StringVar()
v6 = StringVar()

a = Label(master, text="Player 1", font="Verdana 10 bold").grid(row=8, column=1, columnspan=2, pady=15)
b = Label(master, text="Player Name").grid(row=9, column=1, sticky='w')
c = Label(master, text="1st Service Percentage:").grid(row=10, column=1, sticky='w')
cc = Label(master, text="value", textvariable=v1)
d = Label(master, text="Points Won on 1st Serve: ").grid(row=11, column=1, sticky='w')
dd = Label(master, text="value", textvariable=v2)
e = Label(master, text="Points Won on 2nd serve:").grid(row=12, column=1, sticky='w')
ee = Label(master, text="value", textvariable=v3)

a22 = Label(master, text="Player 2", font="Verdana 10 bold").grid(row=8, column=3, columnspan=2, pady=15)
b22 = Label(master, text="Player Name").grid(row=9, column=3, sticky='w')
c22 = Label(master, text="1st Service Percentage:").grid(row=10, column=3, sticky='w')
cc22 = Label(master, text="value", textvariable=v4)
d22 = Label(master, text="Points Won on 1st Serve: ").grid(row=11, column=3, sticky='w')
dd22 = Label(master, text="value", textvariable=v5)
e22 = Label(master, text="Points Won on 2nd serve:").grid(row=12, column=3, sticky='w')
ee22 = Label(master, text="value", textvariable=v6)


def name():
    with open("Service.csv") as fh:
        for row in fh:
            if (b1.get()) in row:
                player_name = row[0:row.find(',')]
                row = row.replace(player_name+',', '')
                firstService = row[0:row.find(",")]
                row = row.replace(firstService+',', '')
                points_firstserve = row[0:row.find(",")]
                row = row.replace(points_firstserve+',', '')
                points_secondserve = row[0:row.find(",")]
                row = row.replace(points_secondserve+',', '')
                v1.set(firstService)
                cc.grid(row=10, column=2, sticky='w')
                v2.set(points_firstserve)
                dd.grid(row=11, column=2, sticky='w')
                v3.set(points_secondserve)
                ee.grid(row=12, column=2, sticky='w')
            if (b2.get()) in row:
                player_name = row[0:row.find(',')]
                row = row.replace(player_name + ',', '')
                firstService = row[0:row.find(",")]
                row = row.replace(firstService + ',', '')
                points_firstserve = row[0:row.find(",")]
                row = row.replace(points_firstserve + ',', '')
                points_secondserve = row[0:row.find(",")]
                row = row.replace(points_secondserve + ',', '')
                v1.set(firstService)
                cc.grid(row=10, column=2, sticky='w')
                v2.set(points_firstserve)
                dd.grid(row=11, column=2, sticky='w')
                v3.set(points_secondserve)
                ee.grid(row=12, column=2, sticky='w')

myb1 = Entry(master, textvariable=b1)
myb1.insert(10, "Andy Murray")
myb1.grid(row=9, column=2)

myb22 = Entry(master, textvariable=b2)
myb22.insert(10, "Novak Djokovic")
myb22.grid(row=9, column=4)

button1 = Button(master, text='Run', command=name, bg="light green", font="Verdana 9 bold")
button2 = Button(master, text='Quit', command=quit, bg="red", font="Verdana 9 bold")
button1.grid(row=15, column=2, ipadx=50, pady=10)
button2.grid(row=15, column=3, ipadx=50, pady=10, padx=5)

master.geometry("850x500+300+100")
master.bind('<Return>', name)
master.bind('<Escape>', quit)
mainloop()
3
  • 1
    You need to split the line and take the first element from that, maybe like: name.split(',')[0] Commented Jul 17, 2016 at 12:20
  • @DavidZemens, thanks David, but how do I get this input into the correct line in the GUI? Commented Jul 17, 2016 at 12:26
  • I don't know your gui nor do I know where you might want it. I'm sure you can figure it out from here, no? Commented Jul 18, 2016 at 11:37

2 Answers 2

1

Here I am not using v1,v2 and v3 text variables. Appending second player values beside first player values. Enter "Andy Murray" hit Run next Enter "Novak Djokovic" hit run. you will see results of second player beside first player values.

from tkinter import *
import csv

master = Tk()

b1 = StringVar()
#v1 = StringVar()
#v2 = StringVar()
#v3 = StringVar()

a = Label(master, text="Player 1", font="Verdana 10 bold").grid(row=8, column=1, columnspan=2, pady=15)
b = Label(master, text="Player Name").grid(row=9, column=1, sticky='w')
c = Label(master, text="1st Service Percentage:").grid(row=10, column=1, sticky='w')
cc = Label(master, text="")
d = Label(master, text="Points Won on 1st Serve: ").grid(row=11, column=1, sticky='w')
dd = Label(master, text="")
e = Label(master, text="Points Won on 2nd serve:").grid(row=12, column=1, sticky='w')
ee = Label(master, text="")

def name():
    with open("service.csv") as fh:
        for row in fh:
            if (b1.get()) in row:
                player_name = row[0:row.find(',')]
                row=row.replace(player_name+',','')
                #print(row)
                firstService=row[0:row.find(",")]
                row=row.replace(firstService+',','')                
                points_firstserve=row[0:row.find(",")]
                row=row.replace(points_firstserve+',','')                
                points_secondserve=row[0:row.find(",")]
                row=row.replace(points_secondserve+',','')    
                cc['text'] += " "+firstService
                #v1.set(firstService)
                cc.grid(row=10, column=2, sticky='w')
                #v2.set(points_firstserve)
                dd['text'] += " "+points_firstserve
                dd.grid(row=11, column=2, sticky='w')
                #v3.set(points_secondserve)
                ee['text'] += " "+points_secondserve
                ee.grid(row=12, column=2, sticky='w')                

myb1 = Entry(master, textvariable=b1)

myb1.insert(10, "Andy Murray")

myb1.grid(row=9, column=2)

button1 = Button(master, text='Run', command=name, bg="light green", font="Verdana 9 bold")
button2 = Button(master, text='Quit', command=quit, bg="red", font="Verdana 9 bold")

button1.grid(row=15, column=2, ipadx=50, pady=10)
button2.grid(row=15, column=3, ipadx=50, pady=10, padx=5)

master.geometry("850x500+300+100")
master.bind('<Return>', name)
master.bind('<Escape>', quit)
mainloop()
Sign up to request clarification or add additional context in comments.

Comments

1
from tkinter import *
import csv
master = Tk()
b1 = StringVar()
v1 = StringVar()
v2 = StringVar()
v3 = StringVar()
a = Label(master, text="Player 1", font="Verdana 10 bold").grid(row=8, column=1, columnspan=2, pady=15)
b = Label(master, text="Player Name").grid(row=9, column=1, sticky='w')
c = Label(master, text="1st Service Percentage:").grid(row=10, column=1, sticky='w')
cc = Label(master, text="value", textvariable=v1)
d = Label(master, text="Points Won on 1st Serve: ").grid(row=11, column=1, sticky='w')
dd = Label(master, text="value", textvariable=v2)
e = Label(master, text="Points Won on 2nd serve:").grid(row=12, column=1, sticky='w')
ee = Label(master, text="value", textvariable=v3)
def name():
    with open("Service.csv") as fh:
        for row in fh:
            if (b1.get()) in row:
                player_name = row[0:row.find(',')]
                row=row.replace(player_name+',','')
                #print(row)
                firstService=row[0:row.find(",")]
                row=row.replace(firstService+',','')                
                points_firstserve=row[0:row.find(",")]
                row=row.replace(points_firstserve+',','')                
                points_secondserve=row[0:row.find(",")]
                row=row.replace(points_secondserve+',','')    
                #
                v1.set(firstService)
                cc.grid(row=10, column=2, sticky='w')
                v2.set(points_firstserve)
                dd.grid(row=11, column=2, sticky='w')
                v3.set(points_secondserve)
                ee.grid(row=12, column=2, sticky='w')                
myb1 = Entry(master, textvariable=b1)
myb1.insert(10, "Andy Murray")
myb1.grid(row=9, column=2)
button1 = Button(master, text='Run', command=name, bg="light green", font="Verdana 9 bold")
button2 = Button(master, text='Quit', command=quit, bg="red", font="Verdana 9 bold")
button1.grid(row=15, column=2, ipadx=50, pady=10)
button2.grid(row=15, column=3, ipadx=50, pady=10, padx=5)
master.geometry("850x500+300+100")
master.bind('<Return>', name)
master.bind('<Escape>', quit)
mainloop()

This will fetch numbers from csv row for specific player. Am placing the value beside value names in the GUI.

Hope this helps.

7 Comments

super, thanks a million. One more question. What if I have the same fields next to each other. And with 1 click on the button I want to have the details from both players?
@Wouter Sorry , I didn't get you.
now I have the results for 1 player. But lets put a "Player 2" next to it. When I press "Run" I want the results filled in from 2 players. Is this possible?
ofcourse. we can get it. add one more text widget beside it. enter player name in second text widget and hit "Run". using name in second text widget check for row if it matches just do the same.
or you asked within one text widget like "Novak Djokovic , Andy Murray" ? for this we need to separate player names and fetch results one by one for each player name.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.