Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 KB | None | 0 0
  1. import tkinter as tk
  2. from random import randint
  3. FONTTI = ("Helvetica", 18, "bold")
  4.  
  5. # 9 sanan lista eripituisille sanoille (5-8)
  6. SANAVAIHTOEHDOT5 = ["riski", "maine", "väite", "peili", "vuosi", "lampi", "eläin", "kello", "suhde"]
  7. SANAVAIHTOEHDOT6 = ["säätää", "laulaa", "arvata", "sekava", "jokeri", "paikka", "voittaa", "vuotta", "kuudes"]
  8. SANAVAIHTOEHDOT7 = ["selitys", "kuivuus", "karkeus", "oleminen","kirjata","luovuus","hallita","ukkonen","yrittää"]
  9. SANAVAIHTOEHDOT8 = ["toivoton", "kylläkin", "piiritys", "tasainen", "epäreilu", "urheilla", "ylistävä", "arvosana","tahdikas"]
  10.  
  11.  
  12.  
  13. class Pohja(tk.Tk):
  14. def __init__(self, *args, **kwargs):
  15. tk.Tk.__init__(self, *args, **kwargs)
  16. pohja = tk.Frame(self) # kaikki ikkunat tulevat tämän päälle
  17. pohja.pack(side="top", fill="both", expand=True)
  18. pohja.grid_rowconfigure(0, weight=1)
  19. pohja.grid_columnconfigure(0, weight=1)
  20. self.ikkunat = {}
  21. for F in (Etusivu, Pelaa, Ohjeet, Asetukset): # Laitetaan kaikki framet saman ikkunan sisälle, Etusivu päällimmäisenä
  22. page_name = F.__name__
  23. ikkuna = F(parent=pohja, ohjain=self)
  24. self.ikkunat[page_name] = ikkuna
  25. ikkuna.grid(row=0, column=0, sticky="nsew")
  26. self.näytä_ikkuna("Etusivu")
  27.  
  28. def näytä_ikkuna(self, page_name):
  29. ikkuna = self.ikkunat[page_name] # näytetään pyydetty sivu
  30. ikkuna.tkraise()
  31.  
  32. def poistu(self):
  33. self.quit() # sulkee kaikki ikkunat
  34.  
  35.  
  36. class Etusivu(tk.Frame):
  37.  
  38. def __init__(self, parent, ohjain):
  39. tk.Frame.__init__(self, parent)
  40. self.ohjain = ohjain
  41. label = tk.Label(self, text="Etusivu", font=FONTTI)
  42. label.pack(side="top", fill="x", pady=10)
  43.  
  44. # button0 = tk.Button(self, text="Pelaa",
  45. # command=lambda: ohjain.näytä_ikkuna("Pelaa"))
  46. button0 = tk.Button(self, text="Pelaa", command = kaksikomentoa(lambda: ohjain.näytä_ikkuna("Pelaa"),päivitäasennukset(parent,ohjain)))
  47. button1 = tk.Button(self, text="Ohjeet",
  48. command=lambda: ohjain.näytä_ikkuna("Ohjeet"))
  49. button2 = tk.Button(self, text="Asetukset",
  50. command=lambda: ohjain.näytä_ikkuna("Asetukset"))
  51. button3 = tk.Button(self, text="Poistu",
  52. command = self.poistu)
  53. button0.pack()
  54. button1.pack()
  55. button2.pack()
  56. button3.pack()
  57.  
  58.  
  59. def poistu(self):
  60. Pohja.poistu(self)
  61.  
  62.  
  63.  
  64.  
  65.  
  66. class Pelaa(tk.Frame):
  67. # Kertoo käyttäjälle millä asetuksilla peli alkaa, antaa mahdollisuuden palata muuttamaan asetuksia
  68.  
  69. def __init__(self, parent, ohjain):
  70. tk.Frame.__init__(self, parent)
  71. self.ohjain = ohjain
  72. label = tk.Label(self, text="Ebin", font=FONTTI)
  73. label.pack(side="top", fill="x", pady=10)
  74.  
  75. asetukset = Asetukset(self, self)
  76. sananpituusteksti = tk.StringVar()
  77. arvausmääräteksti = tk.StringVar()
  78.  
  79. self.__pituusteksti = sananpituusteksti
  80. self.__arvausmäärä = arvausmääräteksti
  81.  
  82. label2 = tk.Label(self, text="valitsemasi asetukset ovat seuraavat")
  83. label3 = tk.Label(self, text="sanan pituus:")
  84. label4 = tk.Label(self, textvariable=self.__pituusteksti)
  85. label5 = tk.Label(self, text="Arvausten määrä:")
  86. label6 = tk.Label(self, textvariable=self.__arvausmäärä)
  87. label2.pack(),label3.pack(),label4.pack(),label5.pack(),label6.pack()
  88.  
  89. sananpituus, arvausmäärä = asetukset.tuo_asetukset()
  90.  
  91. sananpituusteksti.set(str(sananpituus))
  92. arvausmääräteksti.set(str(arvausmäärä))
  93.  
  94. button = tk.Button(self, text="Palaa",
  95. command=lambda: ohjain.näytä_ikkuna("Etusivu"))
  96.  
  97. aloitus = tk.Button(self, text="Aloita peli",
  98. command=self.pelaa)
  99. aloitus.pack()
  100. button.pack()
  101.  
  102. def päivitäasetukset(self, sananpituus,arvausmäärä):
  103. self.__pituusteksti = sananpituus
  104. self.__arvausmäärä = arvausmäärä
  105. return True
  106.  
  107.  
  108. def pelaa(self):
  109. i = randint(0, 8)
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116. class Peli(tk.Frame):
  117. pass
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. class Ohjeet(tk.Frame):
  125.  
  126. def __init__(self, parent, ohjain):
  127. tk.Frame.__init__(self, parent)
  128. self.ohjain = ohjain
  129. label = tk.Label(self, text="Ohjeet", font=FONTTI)
  130. label.pack(side="top", fill="x", pady=10)
  131. button = tk.Button(self, text="Takaisin",
  132. command=lambda: ohjain.näytä_ikkuna("Etusivu"))
  133. button.pack()
  134.  
  135.  
  136. teksti = tk.Label(self, text="TerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerve")
  137. teksti.pack(side="left", fill="x", pady=10)
  138.  
  139.  
  140.  
  141.  
  142. class Asetukset(tk.Frame):
  143.  
  144. def __init__(self, parent, ohjain):
  145. tk.Frame.__init__(self, parent)
  146. self.ohjain = ohjain
  147. label = tk.Label(self, text="Asetukset", font=FONTTI, width=1, height=2)
  148. label.pack(side="top", fill="x", pady=10)
  149. numero = tk.StringVar(self)
  150. numero.set(randint(5,8))
  151. labellista1 = tk.Label(self, text="Arvattavan sanan pituus:")
  152. labellista1.pack()
  153. lista1 = tk.OptionMenu(self, numero, 5,6,7,8)
  154. lista1.pack()
  155. self.__sananpituus = numero.get()
  156. arvaus = tk.StringVar(self) # oletuksella arvausten määrä on 10
  157. arvaus.set(10)
  158. labellista2 = tk.Label(self, text="sallittujen arvausten määrä:")
  159. labellista2.pack()
  160. lista2 = tk.OptionMenu(self, arvaus, 5,6,7,8,9,10,11,12,13,14,15)
  161. lista2.pack()
  162. self.__hutimäärä = arvaus.get()
  163.  
  164. button = tk.Button(self, text="Takaisin",
  165. command=lambda: ohjain.näytä_ikkuna("Etusivu"))
  166. button.pack()
  167.  
  168.  
  169. def tuo_asetukset(self):
  170. return self.__sananpituus, self.__hutimäärä
  171.  
  172.  
  173.  
  174.  
  175. def kaksikomentoa(*funktiot):
  176. def combined_func(*args, **kwargs):
  177. for funktio in funktiot:
  178. funktio(*args, **kwargs)
  179. return combined_func
  180.  
  181. def päivitäasennukset(parent,ohjain):
  182. kirjainmäärä, arvausmäärä = Asetukset(parent,ohjain).tuo_asetukset()
  183. Pelaa.päivitäasetukset(Pelaa,kirjainmäärä, arvausmäärä)
  184. # Return what?
  185.  
  186.  
  187.  
  188. pass
  189.  
  190.  
  191.  
  192.  
  193. def main():
  194. ohjelma = Pohja()
  195. ohjelma.mainloop()
  196. main()
  197.  
  198.  
  199. ***Error code***
  200. Exception in Tkinter callback
  201. Traceback (most recent call last):
  202. File "E:\Python\lib\tkinter\__init__.py", line 1550, in __call__
  203. return self.func(*args)
  204. File "C:/Users/Matik/PycharmProjects/k15/pastebin.py", line 178, in combined_func
  205. funktio(*args, **kwargs)
  206. TypeError: 'NoneType' object is not callable
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement