Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- from random import randint
- FONTTI = ("Helvetica", 18, "bold")
- # 9 sanan lista eripituisille sanoille (5-8)
- SANAVAIHTOEHDOT5 = ["riski", "maine", "väite", "peili", "vuosi", "lampi", "eläin", "kello", "suhde"]
- SANAVAIHTOEHDOT6 = ["säätää", "laulaa", "arvata", "sekava", "jokeri", "paikka", "voittaa", "vuotta", "kuudes"]
- SANAVAIHTOEHDOT7 = ["selitys", "kuivuus", "karkeus", "oleminen","kirjata","luovuus","hallita","ukkonen","yrittää"]
- SANAVAIHTOEHDOT8 = ["toivoton", "kylläkin", "piiritys", "tasainen", "epäreilu", "urheilla", "ylistävä", "arvosana","tahdikas"]
- class Pohja(tk.Tk):
- def __init__(self, *args, **kwargs):
- tk.Tk.__init__(self, *args, **kwargs)
- pohja = tk.Frame(self) # kaikki ikkunat tulevat tämän päälle
- pohja.pack(side="top", fill="both", expand=True)
- pohja.grid_rowconfigure(0, weight=1)
- pohja.grid_columnconfigure(0, weight=1)
- self.ikkunat = {}
- for F in (Etusivu, Pelaa, Ohjeet, Asetukset): # Laitetaan kaikki framet saman ikkunan sisälle, Etusivu päällimmäisenä
- page_name = F.__name__
- ikkuna = F(parent=pohja, ohjain=self)
- self.ikkunat[page_name] = ikkuna
- ikkuna.grid(row=0, column=0, sticky="nsew")
- self.näytä_ikkuna("Etusivu")
- def näytä_ikkuna(self, page_name):
- ikkuna = self.ikkunat[page_name] # näytetään pyydetty sivu
- ikkuna.tkraise()
- def poistu(self):
- self.quit() # sulkee kaikki ikkunat
- class Etusivu(tk.Frame):
- def __init__(self, parent, ohjain):
- tk.Frame.__init__(self, parent)
- self.ohjain = ohjain
- label = tk.Label(self, text="Etusivu", font=FONTTI)
- label.pack(side="top", fill="x", pady=10)
- # button0 = tk.Button(self, text="Pelaa",
- # command=lambda: ohjain.näytä_ikkuna("Pelaa"))
- button0 = tk.Button(self, text="Pelaa", command = kaksikomentoa(lambda: ohjain.näytä_ikkuna("Pelaa"),päivitäasennukset(parent,ohjain)))
- button1 = tk.Button(self, text="Ohjeet",
- command=lambda: ohjain.näytä_ikkuna("Ohjeet"))
- button2 = tk.Button(self, text="Asetukset",
- command=lambda: ohjain.näytä_ikkuna("Asetukset"))
- button3 = tk.Button(self, text="Poistu",
- command = self.poistu)
- button0.pack()
- button1.pack()
- button2.pack()
- button3.pack()
- def poistu(self):
- Pohja.poistu(self)
- class Pelaa(tk.Frame):
- # Kertoo käyttäjälle millä asetuksilla peli alkaa, antaa mahdollisuuden palata muuttamaan asetuksia
- def __init__(self, parent, ohjain):
- tk.Frame.__init__(self, parent)
- self.ohjain = ohjain
- label = tk.Label(self, text="Ebin", font=FONTTI)
- label.pack(side="top", fill="x", pady=10)
- asetukset = Asetukset(self, self)
- sananpituusteksti = tk.StringVar()
- arvausmääräteksti = tk.StringVar()
- self.__pituusteksti = sananpituusteksti
- self.__arvausmäärä = arvausmääräteksti
- label2 = tk.Label(self, text="valitsemasi asetukset ovat seuraavat")
- label3 = tk.Label(self, text="sanan pituus:")
- label4 = tk.Label(self, textvariable=self.__pituusteksti)
- label5 = tk.Label(self, text="Arvausten määrä:")
- label6 = tk.Label(self, textvariable=self.__arvausmäärä)
- label2.pack(),label3.pack(),label4.pack(),label5.pack(),label6.pack()
- sananpituus, arvausmäärä = asetukset.tuo_asetukset()
- sananpituusteksti.set(str(sananpituus))
- arvausmääräteksti.set(str(arvausmäärä))
- button = tk.Button(self, text="Palaa",
- command=lambda: ohjain.näytä_ikkuna("Etusivu"))
- aloitus = tk.Button(self, text="Aloita peli",
- command=self.pelaa)
- aloitus.pack()
- button.pack()
- def päivitäasetukset(self, sananpituus,arvausmäärä):
- self.__pituusteksti = sananpituus
- self.__arvausmäärä = arvausmäärä
- return True
- def pelaa(self):
- i = randint(0, 8)
- class Peli(tk.Frame):
- pass
- class Ohjeet(tk.Frame):
- def __init__(self, parent, ohjain):
- tk.Frame.__init__(self, parent)
- self.ohjain = ohjain
- label = tk.Label(self, text="Ohjeet", font=FONTTI)
- label.pack(side="top", fill="x", pady=10)
- button = tk.Button(self, text="Takaisin",
- command=lambda: ohjain.näytä_ikkuna("Etusivu"))
- button.pack()
- teksti = tk.Label(self, text="TerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerveTerve")
- teksti.pack(side="left", fill="x", pady=10)
- class Asetukset(tk.Frame):
- def __init__(self, parent, ohjain):
- tk.Frame.__init__(self, parent)
- self.ohjain = ohjain
- label = tk.Label(self, text="Asetukset", font=FONTTI, width=1, height=2)
- label.pack(side="top", fill="x", pady=10)
- numero = tk.StringVar(self)
- numero.set(randint(5,8))
- labellista1 = tk.Label(self, text="Arvattavan sanan pituus:")
- labellista1.pack()
- lista1 = tk.OptionMenu(self, numero, 5,6,7,8)
- lista1.pack()
- self.__sananpituus = numero.get()
- arvaus = tk.StringVar(self) # oletuksella arvausten määrä on 10
- arvaus.set(10)
- labellista2 = tk.Label(self, text="sallittujen arvausten määrä:")
- labellista2.pack()
- lista2 = tk.OptionMenu(self, arvaus, 5,6,7,8,9,10,11,12,13,14,15)
- lista2.pack()
- self.__hutimäärä = arvaus.get()
- button = tk.Button(self, text="Takaisin",
- command=lambda: ohjain.näytä_ikkuna("Etusivu"))
- button.pack()
- def tuo_asetukset(self):
- return self.__sananpituus, self.__hutimäärä
- def kaksikomentoa(*funktiot):
- def combined_func(*args, **kwargs):
- for funktio in funktiot:
- funktio(*args, **kwargs)
- return combined_func
- def päivitäasennukset(parent,ohjain):
- kirjainmäärä, arvausmäärä = Asetukset(parent,ohjain).tuo_asetukset()
- Pelaa.päivitäasetukset(Pelaa,kirjainmäärä, arvausmäärä)
- # Return what?
- pass
- def main():
- ohjelma = Pohja()
- ohjelma.mainloop()
- main()
- ***Error code***
- Exception in Tkinter callback
- Traceback (most recent call last):
- File "E:\Python\lib\tkinter\__init__.py", line 1550, in __call__
- return self.func(*args)
- File "C:/Users/Matik/PycharmProjects/k15/pastebin.py", line 178, in combined_func
- funktio(*args, **kwargs)
- TypeError: 'NoneType' object is not callable
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement