• We just launched and are currently in beta. Join us as we build and grow the community.

Typo Speed - Typing Speed Calculator

heretostay

Dungeon Explorer
H Rep
0
0
0
Rep
0
H Vouches
0
0
0
Vouches
0
Posts
143
Likes
142
Bits
2 MONTHS
2 2 MONTHS OF SERVICE
LEVEL 1 400 XP
Hello Guys, Here I've Uploaded a Sourcecode of Typo Speed - Typing Speed Calculator Created in Python 3.

If you want full tutorial video then you can visit bb coder guy (https://www.youtube.com/channel/UC-bbvWb1huCXugbY45l_zoQ) Youtube Channel

To run this you have to install python module listed below:

ttkthemes - pip install ttkthemes

Source Code

  1. import

    tkinter as

    tk

  2. import

    time

  3. from

    tkinter import

    ttk

  4. from

    ttkthemes import

    themed_tk as

    tt

  5. import

    threading

  6. import

    random


  7. # Initial Variables

  8. timeLimit =

    60

  9. remainingTime =

    timeLimit

  10. elpasedTime =

    0

  11. elpasedTimeInMinute =

    0

  12. totalWords =

    0

  13. wrong_words =

    0

  14. net_wpm=

    0

  15. accuracy=

    0


  16. # ************************************************************************ Start Button *****************************************************************

  17. def

    start_timer(

    )

    :

  18. global

    elpasedTime

  19. entry.focus

    (

    )

  20. entry.config

    (

    state=

    'normal'

    )

  21. button_start.config

    (

    state=

    'disabled'

    )

  22. button_reset.config

    (

    state=

    'disabled'

    )

  23. for

    k in

    range

    (

    1

    ,

    timeLimit + 1

    )

    :

  24. elpasedTime =

    k

  25. lbl_elpasedTimer[

    'text'

    ]

    =

    elpasedTime



  26. updatedRemainingTime =

    remainingTime - elpasedTime

  27. lbl_remainingTimer[

    'text'

    ]

    =

    updatedRemainingTime



  28. time

    .sleep

    (

    1

    )

  29. root.update

    (

    )

  30. entry.config

    (

    state=

    'disabled'

    )

  31. button_reset.config

    (

    state=

    'normal'

    )



  32. def

    result(

    )

    :

  33. global

    wrong_words

  34. global

    elpasedTime

  35. global

    elpasedTimeInMinute

  36. global

    accuracy

  37. para_words =

    lbl_paragraph[

    'text'

    ]

    .split

    (

    )

  38. while

    elpasedTime !=

    timeLimit:

  39. enteredParagraph =

    entry.get

    (

    1.0

    ,

    'end-1c'

    )

    .split

    (

    )

  40. totalWords =

    len

    (

    enteredParagraph)

  41. for

    pair in

    list

    (

    zip

    (

    para_words,

    enteredParagraph)

    )

    :

  42. if

    pair[

    0

    ]

    !=

    pair[

    1

    ]

    :

  43. wrong_words+=

    1

  44. elpasedTimeInMinute =

    elpasedTime/60

  45. # gross wpm

  46. gross_wpm =

    (

    totalWords)

    /elpasedTimeInMinute

  47. # net wpm

  48. net_wpm =

    (

    totalWords-wrong_words)

    /elpasedTimeInMinute

  49. lbl_wpm[

    'text'

    ]

    =

    round

    (

    net_wpm)

  50. # accuracy

  51. accuracy =

    (

    net_wpm/gross_wpm)

    * 100

  52. lbl_accuracy[

    'text'

    ]

    =

    round

    (

    accuracy,

    2

    )

  53. # total words

  54. lbl_total_words[

    'text'

    ]

    =

    totalWords

  55. # wrong words

  56. lbl_wrong_words[

    'text'

    ]

    =

    wrong_words

  57. def

    start(

    )

    :

  58. thr1 =

    threading

    .Thread

    (

    target=

    start_timer)

  59. thr1.start

    (

    )

  60. thr2 =

    threading

    .Thread

    (

    target=

    result)

  61. thr2.start

    (

    )

  62. # ************************************************************ Reset Button *******************************************************

  63. def

    reset(

    )

    :

  64. global

    remainingTime

  65. global

    elpasedTime

  66. button_reset.config

    (

    state=

    'disabled'

    )

  67. button_start.config

    (

    state=

    'normal'

    )



  68. entry.config

    (

    state=

    'normal'

    )

  69. entry.delete

    (

    1.0

    ,

    tk.END

    )

  70. entry.config

    (

    state=

    'disabled'

    )

  71. remainingTime =

    timeLimit

  72. elpasedTime =

    0

  73. lbl_elpasedTimer[

    'text'

    ]

    =

    0

  74. lbl_remainingTimer[

    'text'

    ]

    =

    60

  75. lbl_wpm[

    'text'

    ]

    =

    0

  76. lbl_accuracy[

    'text'

    ]

    =

    0

  77. lbl_total_words[

    'text'

    ]

    =

    0

  78. lbl_wrong_words[

    'text'

    ]

    =

    0

  79. # *************************************************************** Random Paragraph **************************************************

  80. with

    open

    (

    'paragraph.txt'

    )

    as

    f:

  81. paragraphs =

    f.readlines

    (

    )

  82. selected_paragraph =

    random

    .choice

    (

    paragraphs)

  83. # **************************************************************************************************************************************************

  84. # **************************************************************************************************************************************************

  85. # **************************************************************************************************************************************************

  86. # ********************************************************************* Designing ******************************************************************

  87. # **************************************************************************************************************************************************

  88. # **************************************************************************************************************************************************

  89. # **************************************************************************************************************************************************

  90. ###################################################################### Creating Window ############################################################

  91. root =

    tt.ThemedTk

    (

    )

  92. root.get_themes

    (

    )

  93. root.set_theme

    (

    "radiance"

    )

  94. root.title

    (

    "Typo Speed (Developed by : BB Coder Guy)"

    )

  95. root.geometry

    (

    '1140x950+400+20'

    )

  96. root.configure

    (

    bg=

    'white'

    )

  97. root.resizable

    (

    False

    ,

    False

    )

  98. # *******************************************************************************************************************************************

  99. ############################################################### Main Frame #######################################################

  100. center_frame_main =

    tk.Frame

    (

    root,

    bg=

    'white'

    ,

    bd=

    4

    )

  101. ###### Title Frame ######

  102. frame_title =

    tk.Frame

    (

    center_frame_main,

    bg=

    'orange'

    ,

    relief=

    'flat'

    )

  103. lbl_title =

    tk.Label

    (

    frame_title,

    text=

    'Typo Speed'

    ,

    font=

    'algerian 35 bold'

    ,

    bg=

    'light yellow'

    ,

    fg=

    'black'

    ,

    relief=

    'flat'

    ,

    bd=

    10

    ,

    width=

    30

    )

  104. lbl_title.grid

    (

    row=

    0

    ,

    pady=

    10

    )

  105. frame_title.grid

    (

    row=

    0

    ,

    columnspan=

    12

    )

  106. # ****** Title Frame End *****************

  107. ###### Test Frame ######

  108. frame_test =

    tk.LabelFrame

    (

    center_frame_main,

    text=

    'Test'

    ,

    bd=

    '4'

    ,

    bg=

    'white'

    )

  109. lbl_paragraph =

    tk.Label

    (

    frame_test,

    text=

    selected_paragraph,

    wraplength=

    1000

    ,

    justify=

    'left'

    )

  110. entry =

    tk.Text

    (

    frame_test,

    height=

    8

    ,

    width=

    110

    ,

    bd=

    2

    )

  111. entry.config

    (

    state=

    'disabled'

    )

  112. lbl_paragraph.grid

    (

    row=

    0

    ,

    sticky=

    'ew'

    ,

    pady=

    5

    )

  113. entry.grid

    (

    row=

    1

    )

  114. frame_test.grid

    (

    row=

    1

    ,

    columnspan=

    12

    ,

    sticky=

    'n'

    ,

    padx=

    5

    ,

    pady=

    5

    )

  115. # ********* Test Frame End **************

  116. ###### Output Frame ######

  117. font =

    'Tahoma 10 bold'

  118. title_color =

    'red'

  119. frame_output =

    tk.LabelFrame

    (

    center_frame_main,

    bg=

    'white'

    ,

    relief=

    'flat'

    )

  120. ###### Labels

  121. frame_labels =

    tk.Frame

    (

    frame_output,

    bg=

    'white'

    )

  122. lbl_elpasedTime =

    tk.Label

    (

    frame_labels,

    text=

    'Elpased Time'

    ,

    font=

    font,

    fg=

    title_color,

    bg=

    'white'

    )

  123. lbl_elpasedTimer =

    tk.Label

    (

    frame_labels,

    text=

    '0'

    ,

    font=

    font,

    bg=

    'white'

    )

  124. lbl_remainingTime =

    tk.Label

    (

    frame_labels,

    text=

    'Remaining Time'

    ,

    font=

    font,

    fg=

    title_color,

    bg=

    'white'

    )

  125. lbl_remainingTimer =

    tk.Label

    (

    frame_labels,

    text=

    '60'

    ,

    font=

    font,

    bg=

    'white'

    )

  126. lbl_wpm_title =

    tk.Label

    (

    frame_labels,

    text=

    'WPM'

    ,

    font=

    font,

    fg=

    title_color,

    bg=

    'white'

    )

  127. lbl_wpm =

    tk.Label

    (

    frame_labels,

    text=

    '0'

    ,

    font=

    font,

    bg=

    'white'

    )

  128. lbl_accuracy_title =

    tk.Label

    (

    frame_labels,

    text=

    'Accuracy(%)'

    ,

    font=

    font,

    fg=

    title_color,

    bg=

    'white'

    )

  129. lbl_accuracy =

    tk.Label

    (

    frame_labels,

    text=

    '0'

    ,

    font=

    font,

    bg=

    'white'

    )

  130. lbl_total_words_title =

    tk.Label

    (

    frame_labels,

    text=

    'Total Words'

    ,

    font=

    font,

    fg=

    title_color,

    bg=

    'white'

    )

  131. lbl_total_words =

    tk.Label

    (

    frame_labels,

    text=

    '0'

    ,

    font=

    font,

    bg=

    'white'

    )

  132. lbl_wrong_words_title =

    tk.Label

    (

    frame_labels,

    text=

    'Wrong Words'

    ,

    font=

    font,

    fg=

    title_color,

    bg=

    'white'

    )

  133. lbl_wrong_words =

    tk.Label

    (

    frame_labels,

    text=

    '0'

    ,

    font=

    font,

    bg=

    'white'

    )

  134. lbl_elpasedTime.grid

    (

    row=

    0

    ,

    column=

    0

    ,

    padx=

    10

    ,

    pady=

    10

    )

  135. lbl_elpasedTimer.grid

    (

    row=

    0

    ,

    column=

    1

    ,

    padx=

    10

    ,

    pady=

    5

    )

  136. lbl_remainingTime.grid

    (

    row=

    0

    ,

    column=

    2

    ,

    padx=

    10

    ,

    pady=

    5

    )

  137. lbl_remainingTimer.grid

    (

    row=

    0

    ,

    column=

    3

    ,

    padx=

    10

    ,

    pady=

    5

    )

  138. lbl_wpm_title.grid

    (

    row=

    0

    ,

    column=

    4

    ,

    padx=

    10

    ,

    pady=

    10

    )

  139. lbl_wpm.grid

    (

    row=

    0

    ,

    column=

    5

    ,

    padx=

    10

    )

  140. lbl_accuracy_title.grid

    (

    row=

    0

    ,

    column=

    6

    ,

    padx=

    10

    ,

    pady=

    10

    )

  141. lbl_accuracy.grid

    (

    row=

    0

    ,

    column=

    7

    ,

    padx=

    10

    )

  142. lbl_total_words_title.grid

    (

    row=

    0

    ,

    column=

    8

    ,

    padx=

    10

    )

  143. lbl_total_words.grid

    (

    row=

    0

    ,

    column=

    9

    ,

    padx=

    10

    )

  144. lbl_wrong_words_title.grid

    (

    row=

    0

    ,

    column=

    10

    ,

    padx=

    10

    )

  145. lbl_wrong_words.grid

    (

    row=

    0

    ,

    column=

    11

    ,

    padx=

    10

    )

  146. frame_labels.grid

    (

    row=

    0

    ,

    columnspan=

    12

    ,

    sticky=

    'n'

    )

  147. ###### Buttons

  148. frame_controls =

    tk.Frame

    (

    frame_output,

    bg=

    'white'

    )

  149. button_start =

    ttk.Button

    (

    frame_controls,

    text=

    'Start'

    ,

    command=

    start)

  150. button_reset =

    ttk.Button

    (

    frame_controls,

    text=

    'Reset'

    ,

    command=

    reset)

  151. button_reset.config

    (

    state=

    'disabled'

    )

  152. button_start.grid

    (

    row=

    1

    ,

    column=

    0

    ,

    padx=

    10

    ,

    sticky=

    'n'

    )

  153. button_reset.grid

    (

    row=

    1

    ,

    column=

    1

    ,

    padx=

    10

    ,

    sticky=

    'n'

    )

  154. frame_controls.grid

    (

    row=

    1

    ,

    columnspan=

    12

    ,

    sticky=

    'n'

    )

  155. frame_output.grid

    (

    row=

    2

    ,

    columnspan=

    12

    ,

    sticky=

    'n'

    )

  156. # *********************** Output Frame End ****************

  157. ###### Keyboard Frame ######

  158. frame_keyboard =

    tk.LabelFrame

    (

    center_frame_main,

    bd=

    4

    ,

    bg=

    'white'

    ,

    fg=

    'black'

    ,

    relief=

    'flat'

    )

  159. # frame_1_0 = tk.Frame(frame_keyboard,bg='white')

  160. # for i in range(0,10):

  161. # exec(f"lbl_{i} = tk.Label(frame_1_0,text='{i}',bg='black',fg='white',width=5,height=2,relief='groove',bd=10)")

  162. # exec(f"lbl_{i}.grid(row=0,column=i+1,padx=10,pady=5)")

  163. ###### 1-0

  164. frame_1_0 =

    tk.Frame

    (

    frame_keyboard,

    bg=

    'white'

    )

  165. lbl_1 =

    tk.Label

    (

    frame_1_0,

    text=

    '1'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  166. lbl_2 =

    tk.Label

    (

    frame_1_0,

    text=

    '2'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  167. lbl_3 =

    tk.Label

    (

    frame_1_0,

    text=

    '3'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  168. lbl_4 =

    tk.Label

    (

    frame_1_0,

    text=

    '4'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  169. lbl_5 =

    tk.Label

    (

    frame_1_0,

    text=

    '5'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  170. lbl_6 =

    tk.Label

    (

    frame_1_0,

    text=

    '6'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  171. lbl_7 =

    tk.Label

    (

    frame_1_0,

    text=

    '7'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  172. lbl_8 =

    tk.Label

    (

    frame_1_0,

    text=

    '8'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  173. lbl_9 =

    tk.Label

    (

    frame_1_0,

    text=

    '9'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  174. lbl_0 =

    tk.Label

    (

    frame_1_0,

    text=

    '0'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  175. lbl_1.grid

    (

    row=

    0

    ,

    column=

    1

    ,

    padx=

    10

    ,

    pady=

    5

    )

  176. lbl_2.grid

    (

    row=

    0

    ,

    column=

    2

    ,

    padx=

    10

    ,

    pady=

    5

    )

  177. lbl_3.grid

    (

    row=

    0

    ,

    column=

    3

    ,

    padx=

    10

    ,

    pady=

    5

    )

  178. lbl_4.grid

    (

    row=

    0

    ,

    column=

    4

    ,

    padx=

    10

    ,

    pady=

    5

    )

  179. lbl_5.grid

    (

    row=

    0

    ,

    column=

    5

    ,

    padx=

    10

    ,

    pady=

    5

    )

  180. lbl_6.grid

    (

    row=

    0

    ,

    column=

    6

    ,

    padx=

    10

    ,

    pady=

    5

    )

  181. lbl_7.grid

    (

    row=

    0

    ,

    column=

    7

    ,

    padx=

    10

    ,

    pady=

    5

    )

  182. lbl_8.grid

    (

    row=

    0

    ,

    column=

    8

    ,

    padx=

    10

    ,

    pady=

    5

    )

  183. lbl_9.grid

    (

    row=

    0

    ,

    column=

    9

    ,

    padx=

    10

    ,

    pady=

    5

    )

  184. lbl_0.grid

    (

    row=

    0

    ,

    column=

    10

    ,

    padx=

    10

    ,

    pady=

    5

    )

  185. frame_1_0.grid

    (

    row=

    0

    )

  186. ###### Q-P

  187. frame_q_p =

    tk.Frame

    (

    frame_keyboard,

    bg=

    'white'

    )

  188. lbl_Q =

    tk.Label

    (

    frame_q_p,

    text=

    'Q'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  189. lbl_W =

    tk.Label

    (

    frame_q_p,

    text=

    'W'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  190. lbl_E =

    tk.Label

    (

    frame_q_p,

    text=

    'E'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  191. lbl_R =

    tk.Label

    (

    frame_q_p,

    text=

    'R'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  192. lbl_T =

    tk.Label

    (

    frame_q_p,

    text=

    'T'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  193. lbl_Y =

    tk.Label

    (

    frame_q_p,

    text=

    'Y'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  194. lbl_U =

    tk.Label

    (

    frame_q_p,

    text=

    'U'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  195. lbl_I =

    tk.Label

    (

    frame_q_p,

    text=

    'I'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  196. lbl_O =

    tk.Label

    (

    frame_q_p,

    text=

    'O'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  197. lbl_P =

    tk.Label

    (

    frame_q_p,

    text=

    'P'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  198. lbl_Q.grid

    (

    row=

    0

    ,

    column=

    1

    ,

    padx=

    10

    ,

    pady=

    5

    )

  199. lbl_W.grid

    (

    row=

    0

    ,

    column=

    2

    ,

    padx=

    10

    ,

    pady=

    5

    )

  200. lbl_E.grid

    (

    row=

    0

    ,

    column=

    3

    ,

    padx=

    10

    ,

    pady=

    5

    )

  201. lbl_R.grid

    (

    row=

    0

    ,

    column=

    4

    ,

    padx=

    10

    ,

    pady=

    5

    )

  202. lbl_T.grid

    (

    row=

    0

    ,

    column=

    5

    ,

    padx=

    10

    ,

    pady=

    5

    )

  203. lbl_Y.grid

    (

    row=

    0

    ,

    column=

    6

    ,

    padx=

    10

    ,

    pady=

    5

    )

  204. lbl_U.grid

    (

    row=

    0

    ,

    column=

    7

    ,

    padx=

    10

    ,

    pady=

    5

    )

  205. lbl_I.grid

    (

    row=

    0

    ,

    column=

    8

    ,

    padx=

    10

    ,

    pady=

    5

    )

  206. lbl_O.grid

    (

    row=

    0

    ,

    column=

    9

    ,

    padx=

    10

    ,

    pady=

    5

    )

  207. lbl_P.grid

    (

    row=

    0

    ,

    column=

    10

    ,

    padx=

    10

    ,

    pady=

    5

    )

  208. frame_q_p.grid

    (

    row=

    1

    )

  209. ###### A-L

  210. frame_a_l =

    tk.Frame

    (

    frame_keyboard,

    bg=

    'white'

    )

  211. lbl_A =

    tk.Label

    (

    frame_a_l,

    text=

    'A'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  212. lbl_S =

    tk.Label

    (

    frame_a_l,

    text=

    'S'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  213. lbl_D =

    tk.Label

    (

    frame_a_l,

    text=

    'D'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  214. lbl_F =

    tk.Label

    (

    frame_a_l,

    text=

    'F'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  215. lbl_G =

    tk.Label

    (

    frame_a_l,

    text=

    'G'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  216. lbl_H =

    tk.Label

    (

    frame_a_l,

    text=

    'H'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  217. lbl_J =

    tk.Label

    (

    frame_a_l,

    text=

    'J'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  218. lbl_K =

    tk.Label

    (

    frame_a_l,

    text=

    'K'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  219. lbl_L =

    tk.Label

    (

    frame_a_l,

    text=

    'L'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  220. lbl_A.grid

    (

    row=

    0

    ,

    column=

    1

    ,

    padx=

    10

    ,

    pady=

    5

    )

  221. lbl_S.grid

    (

    row=

    0

    ,

    column=

    2

    ,

    padx=

    10

    ,

    pady=

    5

    )

  222. lbl_D.grid

    (

    row=

    0

    ,

    column=

    3

    ,

    padx=

    10

    ,

    pady=

    5

    )

  223. lbl_F.grid

    (

    row=

    0

    ,

    column=

    4

    ,

    padx=

    10

    ,

    pady=

    5

    )

  224. lbl_G.grid

    (

    row=

    0

    ,

    column=

    5

    ,

    padx=

    10

    ,

    pady=

    5

    )

  225. lbl_H.grid

    (

    row=

    0

    ,

    column=

    6

    ,

    padx=

    10

    ,

    pady=

    5

    )

  226. lbl_J.grid

    (

    row=

    0

    ,

    column=

    7

    ,

    padx=

    10

    ,

    pady=

    5

    )

  227. lbl_K.grid

    (

    row=

    0

    ,

    column=

    8

    ,

    padx=

    10

    ,

    pady=

    5

    )

  228. lbl_L.grid

    (

    row=

    0

    ,

    column=

    9

    ,

    padx=

    10

    ,

    pady=

    5

    )

  229. frame_a_l.grid

    (

    row=

    2

    )

  230. ###### Z-M

  231. frame_z_m =

    tk.Frame

    (

    frame_keyboard,

    bg=

    'white'

    )

  232. lbl_Z =

    tk.Label

    (

    frame_z_m,

    text=

    'Z'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  233. lbl_X =

    tk.Label

    (

    frame_z_m,

    text=

    'X'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  234. lbl_C =

    tk.Label

    (

    frame_z_m,

    text=

    'C'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  235. lbl_V =

    tk.Label

    (

    frame_z_m,

    text=

    'V'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  236. lbl_B =

    tk.Label

    (

    frame_z_m,

    text=

    'B'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  237. lbl_N =

    tk.Label

    (

    frame_z_m,

    text=

    'N'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  238. lbl_M =

    tk.Label

    (

    frame_z_m,

    text=

    'M'

    ,

    bg=

    'black'

    ,

    fg=

    'white'

    ,

    width=

    5

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  239. lbl_Z.grid

    (

    row=

    0

    ,

    column=

    1

    ,

    padx=

    10

    ,

    pady=

    5

    )

  240. lbl_X.grid

    (

    row=

    0

    ,

    column=

    2

    ,

    padx=

    10

    ,

    pady=

    5

    )

  241. lbl_C.grid

    (

    row=

    0

    ,

    column=

    3

    ,

    padx=

    10

    ,

    pady=

    5

    )

  242. lbl_V.grid

    (

    row=

    0

    ,

    column=

    4

    ,

    padx=

    10

    ,

    pady=

    5

    )

  243. lbl_B.grid

    (

    row=

    0

    ,

    column=

    5

    ,

    padx=

    10

    ,

    pady=

    5

    )

  244. lbl_N.grid

    (

    row=

    0

    ,

    column=

    6

    ,

    padx=

    10

    ,

    pady=

    5

    )

  245. lbl_M.grid

    (

    row=

    0

    ,

    column=

    7

    ,

    padx=

    10

    ,

    pady=

    5

    )

  246. frame_z_m.grid

    (

    row=

    3

    )

  247. ###### space

  248. frame_space =

    tk.Frame

    (

    frame_keyboard,

    bg=

    'white'

    )

  249. lbl_space =

    tk.Label

    (

    frame_space,

    bg=

    'black'

    ,

    width=

    40

    ,

    height=

    2

    ,

    relief=

    'groove'

    ,

    bd=

    10

    )

  250. lbl_space.grid

    (

    row=

    0

    ,

    columnspan=

    10

    ,

    padx=

    10

    ,

    pady=

    4

    )

  251. frame_space.grid

    (

    row=

    4

    )

  252. frame_keyboard.grid

    (

    row=

    3

    ,

    columnspan=

    12

    ,

    sticky=

    'n'

    )

  253. # *********** Keyboard Frame End *****************

  254. center_frame_main.grid

    (

    )

  255. # ************************************************************** Main Frame End ***************************************************************

  256. ###### Key Bindings

  257. def

    changeBGEnter(

    widget)

    :

  258. bg =

    'black'

  259. widget.configure

    (

    background=

    "blue"

    )

  260. widget.after

    (

    100

    ,

    lambda

    color=

    bg: widget.configure

    (

    background=

    color)

    )

  261. labels_numbers =

    [

    lbl_1,

    lbl_2,

    lbl_3,

    lbl_4,

    lbl_5,

    lbl_6,

    lbl_7,

    lbl_8,

    lbl_9,

    lbl_0]

  262. labels_alpha =

    [

    lbl_A,

    lbl_B,

    lbl_C,

    lbl_D,

    lbl_E,

    lbl_F,

    lbl_G,

    lbl_H,

    lbl_I,

    lbl_J,

    lbl_K,

    lbl_L,

    lbl_M,

    lbl_N,

    lbl_O,

    lbl_P,

    lbl_Q,

    lbl_R,

    lbl_S,

    lbl_T,

    lbl_U,

    lbl_V,

    lbl_W,

    lbl_X,

    lbl_Y,

    lbl_Z]

  263. labels_space =

    [

    lbl_space]

  264. bindings_number_list =

    [

    1

    ,

    2

    ,

    3

    ,

    4

    ,

    5

    ,

    6

    ,

    7

    ,

    8

    ,

    9

    ,

    0

    ]

  265. bindings_capital_alphabet_list =

    [

    'A'

    ,

    'B'

    ,

    'C'

    ,

    'D'

    ,

    'E'

    ,

    'F'

    ,

    'G'

    ,

    'H'

    ,

    'I'

    ,

    'J'

    ,

    'K'

    ,

    'L'

    ,

    'M'

    ,

    'N'

    ,

    'O'

    ,

    'P'

    ,

    'Q'

    ,

    'R'

    ,

    'S'

    ,

    'T'

    ,

    'U'

    ,

    'V'

    ,

    'W'

    ,

    'X'

    ,

    'Y'

    ,

    'Z'

    ]

  266. bindings_small_alphabet_list =

    [

    'a'

    ,

    'b'

    ,

    'c'

    ,

    'd'

    ,

    'e'

    ,

    'f'

    ,

    'g'

    ,

    'h'

    ,

    'i'

    ,

    'j'

    ,

    'k'

    ,

    'l'

    ,

    'm'

    ,

    'n'

    ,

    'o'

    ,

    'p'

    ,

    'q'

    ,

    'r'

    ,

    's'

    ,

    't'

    ,

    'u'

    ,

    'v'

    ,

    'w'

    ,

    'x'

    ,

    'y'

    ,

    'z'

    ]

  267. for

    number in

    range

    (

    len

    (

    bindings_number_list)

    )

    :

  268. root.bind

    (

    f"{bindings_number_list[number]}"

    ,

    lambda

    event,

    label=

    labels_numbers[

    number]

    : changeBGEnter(

    label)

    )

  269. for

    capital_alphabet in

    range

    (

    len

    (

    bindings_capital_alphabet_list)

    )

    :

  270. root.bind

    (

    f"<{bindings_capital_alphabet_list[capital_alphabet]}>"

    ,

    lambda

    event,

    label=

    labels_alpha[

    capital_alphabet]

    : changeBGEnter(

    label)

    )

  271. for

    small_alphabet in

    range

    (

    len

    (

    bindings_small_alphabet_list)

    )

    :

  272. root.bind

    (

    f"<{bindings_small_alphabet_list[small_alphabet]}>"

    ,

    lambda

    event,

    label=

    labels_alpha[

    small_alphabet]

    : changeBGEnter(

    label)

    )

  273. root.bind

    (

    "<space>"

    ,

    lambda

    event,

    label=

    labels_space[

    0

    ]

    : changeBGEnter(

    label)

    )

  274. root.mainloop

    (

    )

Happy Learning :)

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.

2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.


Download
You must upgrade your account or reply in the thread to view hidden text.
 

449,193

322,229

322,238

Top