Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Den genomsnittliga skrivhastigheten är cirka 40 ord per minut. Om du vill vara produktiv i ditt arbete bör du sträva efter att skriva minst 65 till 70 ord per minut. Att öka din skrivhastighet kommer att förbättra din effektivitet, vilket kommer att öka uppgifter som datainmatning, copywriting, transkription och administrativa roller.

För att testa dina skrivfärdigheter kan du bygga ett enkelt skrivtestprogram med Python. Med hjälp av detta kan du få exakta resultat och utveckla en beroendeframkallande vana för att förbättras med tiden.

Modulerna Tkinter och Random

För att utveckla Typing Test Game kommer du att använda tkinter modulen och slumpmässig modul. Tkinter låter dig skapa skrivbordsapplikationer. Den erbjuder en mängd olika widgets som knappar, etiketter, textrutor och layouthanterare som gör det enkelt att utveckla applikationer utan alltför mycket ansträngning.

instagram viewer

Bortsett från dessa kommer det med hjälpsamma bibliotek, kanvasobjekt och HTML/XML/PDF-tolkare. För att installera Tkinter i ditt system, öppna terminalen och kör:

pip Installera tkinter

Modulen Random har en samling funktioner för att generera slumptal. Du kan använda dessa rutiner för att skapa blandade sekvenser, spelrörelser och pseudo-slumpmässiga heltal. Några av dess vanliga användningsområden inkluderar simulering av tärningskast, blanda listor, en slumpmässig lösenordsgenerator, och i spel som hand cricket och gissning av siffror.

Hur man bygger typningstestapp med Python

Följ dessa steg för att bygga en skrivtestapplikation med Pythons Tkinter och Random-modul.

Du kan hitta källkoden för Typing Test App Using Python och wordtextfilen i denna GitHub-förråd.

Börja med att importera Tkinter och Random-modulen. Initiera Tkinter-instansen och visa rotfönstret. Ställ in måtten i pixlar, titeln och bakgrundsfärgen för fönstret.

från tkinter importera *
importera slumpmässig
från tkinter importera meddelandebox

Huvudskärm = Tk()
Mainscreen.geometry("1000x600")
Mainscreen.title("MakeUseOf Typing Game")
Mainscreen.config(bg="aqua")

Ladda ner listan med ord från GitHub-förvaret och placera den i samma mapp som Python-skriptet för enkel referens. Läs innehållet i textfilen och använd split()-funktionen för att lagra varje ord i en lista. Initiera poängen, missade och räkna variabler till noll och tidsvariabeln till 60.

fil1 = öppen("words.txt", 'r')
words = fil1.läs().split()
poäng = missade = räkna1 = 0
tid = 60

Definiera en funktion som heter given tid() som refererar till de globala variablerna som nämns ovan. Om den återstående tiden är större än noll, minska den med ett och visa den på timerräkningsetiketten (deklareras i den senare hälften av koden). Använd efter() funktion för att anropa giventime()-funktionen efter en fördröjning på 1 000 millisekunder (en sekund).

Om tiden är över, ändra innehållet i startetiketten till Game Over och visa samtidigt poängen på spelinstruktionsetiketten. Skicka motsvarande variabler till formatera() funktion för att visa träff, miss och totalpoäng.

defgiven tid():
global tid, poäng, missat

om tid > 0:
tid -= 1
timercount.configure (text=tid)
timerräkning.efter(1000, given tid)
annan:
startlabel.configure (text="Spelet över!")
gameinstruction.configure (text='Träff = {} | Fröken = {} | Totalt resultat = {}'.format (poäng, missade, poäng - missade))

Skicka titeln och meddelandet till askokcancel() fungera. Om svaret som tas emot i dialogrutan utvärderas till sant, stoppa programmet med hjälp av utgång() fungera.

 rr = messagebox.askokcancel("Spelet över!", "Tryck OK för att avsluta")

om rr == Sann:
utgång()

Definiera en funktion som heter spel() som tar händelse som ett inmatningsargument. Referera till de globala variablerna. Om tidsvariabeln är lika med 60, kör funktionen giventime() för att påbörja nedräkningen. När spelet pågår, ändra startetiketten till Fortsätt och spelinstruktionsetiketten för att trycka på enter efter att ha skrivit ordet med funktionen configure().

defspel(händelse):
global poäng, missade

om tid == 60:
given tid()

startlabel.configure (text='Fortsätta..')
gameinstruction.configure (text="Tryck på Enter efter att ha skrivit ordet")

Hämta ordet som skrivits i wordentry med hjälp av skaffa sig() funktion och kontrollera om det är lika med ordet som visas på skärmen. Om ja, öka poängen och reflektera den på poängetiketten. Öka annars den missade variabeln med en.

Ordna om objekten i ordlistan och visa det första elementet. Använd radera() funktion från noll till sista index på wordentry-widgeten för att rensa innehållet.

om wordentry.get() == labelforward['text']:
poäng += 1
scorelabelcount.configure (text=poäng)
annan:
missade += 1

slumpmässig.blanda(ord)
labelforward.configure (text=ord[0])
wordentry.radera(0, SLUTET)

Ställ in startlabel, labelforward, scorelabel, scorelabelcount, labelfortimer, timercount och gameinstruktion med hjälp av Label-widgeten. Etikettwidgeten tar i det överordnade fönstret där du vill placera den, texten den ska visa, teckensnittstyp, storlek, färg och stil tillsammans med etikettens bakgrundsfärg.

Skicka X- och Y-koordinaterna till plats() metod för att organisera etiketterna på en specifik position.

startlabel = Etikett (Mainscreen, text="Skrivspel",font=('arial',30,"kursiv fet"),bg='svart',fg='vit')
startlabel.place (x=375, y=50)

labelforward = Etikett (Mainscreen, text=' ',font=('arial',45,"kursiv fet"),fg='grön')
labelforward.place (x=350, y=240)

scorelabel = Etikett (Mainscreen, text='Din poäng:',font=('arial',25,"kursiv fet"),fg='rödbrun')
scorelabel.place (x=110, y=100)

scorelabelcount = Etikett (Mainscreen, text=score, font=('arial',25,"kursiv fet"),fg='lila')
scorelabelcount.place (x=250, y=180)

labelfortimer = Etikett (Huvudskärm, text='Tid kvar:',font=('arial',25,"kursiv fet"),fg='rödbrun')
labelfortimer.place (x=700, y=100)

timercount = Etikett (Mainscreen, text=time, font=('arial',25,"kursiv fet"),fg='lila')
timercount.place (x=700, y=180)

spelinstruktion = Etikett (Mainscreen, text="Tryck på Enter efter att ha skrivit ordet",font=('arial',25,"kursiv fet"),fg='grå')
gameinstruction.place (x=250, y=500)

Definiera en inmatningswidget som accepterar ordet du skriver. Ställ in det överordnade fönstret du vill placera det i, teckensnittstyp, storlek, stil tillsammans med kantstorleken och egenskapen justera. Använd metoden place() för att placera inmatningswidgeten och focus_set() metod för att aktivera inmatningsrutan för inmatning.

wordentry = Entry (Mainscreen, font=('arial',25,"kursiv fet"), bd=10, motivera='Centrum')
wordentry.place (x=350, y=330)
wordentry.focus_set()

Ett viktigt steg är att binda Enter-tangenten med en händelse i Tkinter-fönstret. Att göra det säkerställer att när spelaren trycker Stiga på en viss funktion skulle utföras. För att uppnå detta, passerar du string och game() fungerar som parametrar till binda() fungera. De mainloop() funktionen säger åt Python att köra Tkinter-händelsslingan och lyssna efter händelser (som knapptryckningar) tills du stänger fönstret.

Mainscreen.bind('', spel)
mainloop()

Sätt ihop all kod och kör koden för att spela skrivtestspelet till hands.

Utdata från Python Typing Test App

När du kör programmet ovan visas ett fönster som är 1 000 pixlar brett och 600 pixlar högt, med en aqua bakgrundsfärg, en resultattavla, nedräkningstimer och en instruktion för att börja spelet.

När du trycker på Enter börjar spelet och för varje rätt svar ökar programmet poängen ett.

När tiden är över visar programmet slutresultatet tillsammans med en dialogruta för att avsluta spelet.

Tkinter GUI-idéer för nybörjare

Tkinter är ett mycket kraftfullt verktyg som du kan använda för att bygga enkla till fullt fungerande applikationer som är attraktiva och robusta. Även en nybörjare kan använda Tkinter. Några exempel på projekt du kan bygga är ett frågesportspel, en adressbok, en att-göra-lista eller en bildvisare.

Om du vill gå bortom Tkinter, är några av de populära alternativen Qt-designer, Kivy, Toga och BeeWare. Alla dessa ramverk är mångsidiga och stödjer plattformsoberoende utveckling, så att du kan köra dina applikationer problemfritt i alla miljöer.