Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.50 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. # can handle up to 4 vowels and 4 consonants, how to make it more efficient?
  3. # maybe have specific sequences depending on whether the user wants consecutive vowels/consonants
  4. import sys
  5. import ipapy
  6. import os
  7. from tkinter import *
  8. from tkinter import Tk, Checkbutton, Label
  9. from tkinter import StringVar, IntVar
  10.  
  11. def onReturn(event=None):
  12. global i
  13. if i<6:
  14. if i==5:
  15. if len(e.get()) == 0:
  16. i=7
  17. del atomsv[5:7]
  18. print(atomsv[0:5])
  19. global nmbrv
  20. nmbrv = 5
  21. text1.set(lines[i])
  22. else:
  23. global j
  24. j=j+1
  25. atomsv[j] = e.get();
  26. print(atomsv[j])
  27. update_label(event)
  28. if i==4:
  29. if len(e.get()) == 0:
  30. i=7
  31. del atomsv[4:7]
  32. print(atomsv[0:4])
  33. nmbrv = 4
  34. text1.set(lines[i])
  35. else:
  36. j=j+1
  37. atomsv[j] = e.get();
  38. print(atomsv[j])
  39. update_label(event)
  40. if i==3:
  41. if len(e.get()) == 0:
  42. i=7
  43. del atomsv[3:7]
  44. print(atomsv[0:3])
  45. nmbrv = 3
  46. text1.set(lines[i])
  47. else:
  48. j=j+1
  49. atomsv[j] = e.get();
  50. print(atomsv[j])
  51. update_label(event)
  52. if i==2:
  53. if len(e.get()) == 0:
  54. i=7
  55. del atomsv[2:7]
  56. print(atomsv[0:2])
  57. nmbrv = 2
  58. text1.set(lines[i])
  59. else:
  60. j=j+1
  61. atomsv[j] = e.get();
  62. print(atomsv[j])
  63. update_label(event)
  64. if i==1:
  65. if len(e.get()) == 0:
  66. i=7
  67. del atomsv[1:7]
  68. print(atomsv[0:1])
  69. nmbrv = 1
  70. text1.set(lines[i])
  71. else:
  72. j=j+1
  73. atomsv[j] = e.get();
  74. print(atomsv[j])
  75. update_label(event)
  76. if i==0:
  77. j=j+1
  78. atomsv[j] = e.get();
  79. print(atomsv[j])
  80. update_label(event)
  81. elif i==6:
  82. if i==6:
  83. if len(e.get()) == 0:
  84. i=7
  85. del atomsv[6:7]
  86. print(atomsv[0:6])
  87. nmbrv = 6
  88. text1.set(lines[i])
  89. else:
  90. j=j+1
  91. atomsv[j] = e.get();
  92. print(atomsv[j])
  93. nmbrv = 7
  94. update_label(event)
  95. elif i>6:
  96. if i==13:
  97. if len(e.get()) == 0:
  98. i=9
  99. del atomsc[6:7]
  100. print(atomsc[0:6])
  101. update_label(event)
  102. global nmbrc
  103. nmbrc = 6
  104. pregen()
  105. else:
  106. global k
  107. k=k+1
  108. atomsc[k] = e.get();
  109. print(atomsc[k])
  110. nmbrc = 7
  111. pregen()
  112. if i==12:
  113. if len(e.get()) == 0:
  114. i=9
  115. del atomsc[5:7]
  116. print(atomsc[0:5])
  117. update_label(event)
  118. nmbrc = 5
  119. pregen()
  120. else:
  121. k=k+1
  122. atomsc[k] = e.get();
  123. print(atomsc[k])
  124. update_label(event)
  125. if i==11:
  126. if len(e.get()) == 0:
  127. i=9
  128. del atomsc[4:7]
  129. print(atomsc[0:4])
  130. update_label(event)
  131. nmbrc = 4
  132. pregen()
  133. else:
  134. k=k+1
  135. atomsc[k] = e.get();
  136. print(atomsc[k])
  137. update_label(event)
  138. if i==10:
  139. if len(e.get()) == 0:
  140. i=9
  141. del atomsc[3:7]
  142. print(atomsc[0:3])
  143. update_label(event)
  144. nmbrc = 3
  145. pregen()
  146. else:
  147. k=k+1
  148. atomsc[k] = e.get();
  149. print(atomsc[k])
  150. update_label(event)
  151. if i==9:
  152. if len(e.get()) == 0:
  153. i=9
  154. del atomsc[2:7]
  155. print(atomsc[0:2])
  156. nmbrc = 2
  157. pregen()
  158. else:
  159. k=k+1
  160. atomsc[k] = e.get();
  161. print(atomsc[k])
  162. update_label(event)
  163. if i==8:
  164. if len(e.get()) == 0:
  165. i=9
  166. del atomsc[1:7]
  167. print(atomsc[0:1])
  168. nmbrc = 1
  169. pregen()
  170. else:
  171. k=k+1
  172. atomsc[k] = e.get();
  173. print(atomsc[k])
  174. update_label(event)
  175. if i==7:
  176. k=k+1
  177. atomsc[k] = e.get();
  178. print(atomsc[k])
  179. update_label(event)
  180.  
  181. def update_label(event):
  182. e.delete(0, 'end')
  183. global i
  184. i=i+1
  185. if i<6:
  186. text1.set(lines[i])
  187. text1.set(lines[i])
  188.  
  189. def quit():
  190. root.quit()
  191. sys.exit(0)
  192.  
  193. def pregen():
  194. e.destroy()
  195. buttonnext.destroy()
  196. if nmbrv != 1 and nmbrc != 1:
  197. text1.set(lines[14])
  198. if nmbrv != 1 and nmbrc ==1:
  199. text1.set(lines[15])
  200. if nmbrc != 1 and nmbrv ==1:
  201. text1.set(lines[16])
  202. if nmbrv == 1 and nmbrc ==1:
  203. text1.set(lines[17])
  204. buttongen.place(relx=0.45, rely=0.22, anchor=CENTER)
  205.  
  206. def syllgen():
  207. #V
  208. nmbrcombi = nmbrv
  209. global letter1
  210. for num in range(nmbrcombi):
  211. generated_syllable = atomsv[letter1]
  212. print(generated_syllable)
  213. f.write(generated_syllable + "\n")
  214. letter1 += 1
  215. letter1 = 0
  216. #VV
  217. nmbrcombi = (nmbrv*nmbrv)-nmbrv
  218. global letter2
  219. for num in range(nmbrv):
  220. for num in range(nmbrcombi//nmbrv):
  221. if letter1 == letter2:
  222. letter2 += 1
  223. if letter1 != letter2:
  224. generated_syllable = atomsv[letter1]+atomsv[letter2]
  225. print(generated_syllable)
  226. f.write(generated_syllable + "\n")
  227. g.write(generated_syllable + "\n")
  228. letter2 += 1
  229. letter1 += 1
  230. letter2 = 0
  231. letter1,letter2 = 0,0
  232. #VC
  233. nmbrcombi = nmbrv*(nmbrc//nmbrc)
  234. for num in range(nmbrcombi):
  235. for num in range(nmbrc):
  236. generated_syllable = atomsv[letter1]+atomsc[letter2]
  237. print(generated_syllable)
  238. f.write(generated_syllable + "\n")
  239. g.write(generated_syllable + "\n")
  240. letter2 += 1
  241. letter1 += 1
  242. letter2 = 0
  243. letter1,letter2 = 0,0
  244. #CV
  245. nmbrcombi = nmbrc*nmbrv
  246. for num in range(nmbrc):
  247. for num in range(nmbrv):
  248. generated_syllable = atomsc[letter1]+atomsv[letter2]
  249. print(generated_syllable)
  250. f.write(generated_syllable + "\n")
  251. g.write(generated_syllable + "\n")
  252. letter2 += 1
  253. letter1 += 1
  254. letter2 = 0
  255. letter1,letter2 = 0,0
  256. #VVC
  257. nmbrcombi = ((nmbrv*nmbrv)-nmbrv)*nmbrc
  258. global letter3
  259. for num in range(nmbrv):
  260. for num in range(nmbrv-1):
  261. for num in range(nmbrc):
  262. if letter1 == letter2:
  263. letter2 += 1
  264. if letter1 != letter2:
  265. generated_syllable = atomsv[letter1]+atomsv[letter2]+atomsc[letter3]
  266. print(generated_syllable)
  267. f.write(generated_syllable + "\n")
  268. letter3 += 1
  269. letter2 += 1
  270. letter3 = 0
  271. letter1 += 1
  272. letter2, letter3 = 0,0
  273. letter1,letter2,letter3 = 0,0,0
  274. #VCV
  275. nmbrcombi = nmbrv*nmbrc*nmbrv
  276. for num in range(nmbrv):
  277. for num in range(nmbrc):
  278. for num in range(nmbrv):
  279. generated_syllable = atomsv[letter1]+atomsc[letter2]+atomsv[letter3]
  280. print(generated_syllable)
  281. f.write(generated_syllable + "\n")
  282. letter3 += 1
  283. letter2 += 1
  284. letter3 = 0
  285. letter1 += 1
  286. letter2,letter3 = 0,0
  287. letter1,letter2,letter3 = 0,0,0
  288. #CVV
  289. nmbrcombi = nmbrc*((nmbrv*nmbrv)-nmbrv)
  290. for num in range(nmbrc):
  291. for num in range(nmbrv):
  292. for num in range(((nmbrv*nmbrv)-nmbrv)//nmbrv):
  293. if letter2 == letter3:
  294. letter3 += 1
  295. if letter2 != letter3:
  296. generated_syllable = atomsc[letter1]+atomsv[letter2]+atomsv[letter3]
  297. print(generated_syllable)
  298. f.write(generated_syllable + "\n")
  299. letter3 += 1
  300. letter2 += 1
  301. letter3 = 0
  302. letter1 += 1
  303. letter2,letter3 = 0,0
  304. letter1,letter2,letter3 = 0,0,0
  305. #CVC
  306. nmbrcombi = nmbrv*nmbrc*nmbrv
  307. for num in range(nmbrc):
  308. for num in range(nmbrv):
  309. for num in range(nmbrc):
  310. generated_syllable = atomsc[letter1]+atomsv[letter2]+atomsc[letter3]
  311. print(generated_syllable)
  312. f.write(generated_syllable + "\n")
  313. letter3 += 1
  314. letter2 += 1
  315. letter3 = 0
  316. letter1 += 1
  317. letter2,letter3 = 0,0
  318. letter1,letter2,letter3 = 0,0,0
  319.  
  320. f.close()
  321. g.close()
  322. text1.set(lines[14])
  323. buttongen.destroy()
  324. buttonopen.place(relx=0.45, rely=0.22, anchor=CENTER)
  325. genover()
  326.  
  327. def genover():
  328. global num_lines
  329. global syllable_nmbr
  330. with open('syllable_list.txt', 'r') as f:
  331. for line in f:
  332. num_lines += 1
  333. print("Quantity of generated syllables:",num_lines)
  334. syllable_nmbr = "Quantity of generated syllables:",num_lines
  335. f.close()
  336. g.close()
  337. textvar2.place(relx=0.5, rely=0.15, anchor=CENTER)
  338. text2.set(syllable_nmbr)
  339.  
  340. def openfile():
  341. current_path = os.getcwd()
  342. print(current_path)
  343. print(path_file)
  344. os.system("start " + path_file)
  345.  
  346. path_file = 'syllable_list.txt'
  347. open("syllable_list.txt","w+",encoding='utf-8')
  348. open("twoatoms_list.txt","w+",encoding='utf-8')
  349. f=open("syllable_list.txt","a",encoding='utf-8')
  350. g=open("twoatoms_list.txt","a",encoding='utf-8')
  351. i,j,k=0,-1,-1
  352. space = ' '
  353. atomsv = [0,0,0,0,0,0,0]
  354. atomsc = [0,0,0,0,0,0,0]
  355. num_lines = 0
  356. line1 = "Enter the first vowel you want:"
  357. line2 = "Enter the second vowel you want or nothing if you do not want more vowels:"
  358. line3 = "Enter the third vowel you want or nothing if you do not want more vowels:"
  359. line4 = "Enter the fourth vowel you want or nothing if you do not want more vowels:"
  360. line5 = "Enter the fifth vowel you want or nothing if you do not want more vowels:"
  361. line6 = "Enter the sixth vowel you want or nothing if you do not want more vowels:"
  362. line7 = "Enter the seventh vowel you want or nothing if you do not want more vowels:"
  363. line8 = "Enter the first consonant you want:"
  364. line9 = "Enter the second consonant you want or nothing if you do not want more consonants:"
  365. line10 = "Enter the third consonant you want or nothing if you do not want more consonants:"
  366. line11 = "Enter the fourth consonant you want or nothing if you do not want more consonants:"
  367. line12 = "Enter the fifth consonant you want or nothing if you do not want more consonants:"
  368. line13 = "Enter the sixth consonant you want or nothing if you do not want more consonants:"
  369. line14 = "Enter the seventh consonant you want or nothing if you do not want more consonants:"
  370. line15 = "You have chosen the vowels",atomsv,"and the consonants",atomsc
  371. line16 = "You have chosen the vowels",atomsv,"and the consonant",atomsc
  372. line17 = "You have chosen the vowel",atomsv,"and the consonants",atomsc
  373. line18 = "You have chosen the vowel",atomsv,"and the consonant",atomsc
  374. line19 = "All the combinations have been generated in a text file."
  375. syllable_nmbr = "Quantity of generated syllable_s:",num_lines
  376. lines = [line1,line2,line3,line4,line5,line6,line7,line8,line9,line10,line11,line12,line13,line14,line15,line16,line17,line18,line19]
  377. letter1,letter2,letter3 = 0,0,0
  378. nmbrv, nmbrc = 0,0
  379. root = Tk()
  380. root.title("Word generator")
  381. root.resizable(width=False, height=False)
  382. w = 800
  383. h = 600
  384. ws = root.winfo_screenwidth()
  385. hs = root.winfo_screenheight()
  386. x = (ws/2) - (w/2)
  387. y = (hs/2) - (h/2)
  388. root.geometry('%dx%d+%d+%d' %(w, h, x, y))
  389. welcome=Label(root, text ="This software generates syllables based on the sounds you choose.", bg="black",fg='#ffffff', font="13")
  390. welcome.place(relx=0.5, rely=0.05, anchor=CENTER)
  391. text1=StringVar()
  392. text1.set(line1)
  393. textvar1=Label(root, textvariable = text1,bg="black",fg='#ffffff', font="13")
  394. textvar1.place(relx=0.5, rely=0.1, anchor=CENTER)
  395. text2=StringVar()
  396. text2.set(syllable_nmbr)
  397. textvar2=Label(root, textvariable = text2,bg="black",fg='#ffffff', font="13")
  398. e = Entry(root)
  399. e.bind("<Return>",onReturn)
  400. e.place(relx=0.5, rely=0.15, anchor=CENTER)
  401. e.focus()
  402. buttonnext=Button(root, text="Next", command = onReturn)
  403. buttonnext.place(relx=0.45, rely=0.22, anchor=CENTER)
  404. buttonclose=Button(root, text="Close", command = quit)
  405. buttonclose.place(relx=0.55, rely=0.22, anchor=CENTER)
  406. buttongen=Button(root, text="Generate", command = syllgen)
  407. buttonopen=Button(root, text="Open", command = openfile)
  408. root.configure(bg="black")
  409. root.iconbitmap(r'favicon.ico')
  410. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement