Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyCode Conference :: https://pycode-conference.org/
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: tkinter  (Przeczytany 1444 razy)
« : 21:53 09/09/18 »
marcinvxy Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 7


Witam!
Jak zrobić aby przycisk "Wciśnij" w kodzie zamykał obecne okno oraz otwierał nowe?
To co napisałem wiesza się. I nic nie otwiera(jak powinna wyglądać funkcja, która otwiera nowe(kolejne)). Chichot

from tkinter import *
import tkinter.ttk as ttk
import sys

class Okno(Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.przycisk()

    def przycisk(self):
        self.pack(fill=BOTH, expand=1)
        button1 = Button(self, text = "Wcisnij", command=self.zamknij).place(x=150, y=150)

    def zamknij(self):
        sys.exit()

def main():
    gui=Tk()
    gui.maxsize(300, 200)
    gui.minsize(300, 200)
    app=Okno(gui)
    gui.mainloop()

if __name__ == '__main__':
    main()
Zapisane
« Odpowiedz #1 : 03:27 10/09/18 »
Guaz Offline
Advanced Python User

Zobacz profil
**

Reputacja: 38
Płeć: Mężczyzna
Wiadomości: 286


Zanim w sumie to zrobisz, pytanie brzmi czy zamierzasz później wracać do tego zamkniętego okna, czy chcesz je zamknąć bez możliwości powrotu i utworzyć nowe.

No i prośba dla wygodnego czytania, używaj znaczników Uśmiech.
{code=python}
(Twój kod)
{/code}
Tylko klamry zamienić wystarczy na kwadratowe nawiasy.
Zapisane

Python 3.5.2 / Mint
« Odpowiedz #2 : 12:54 10/09/18 »
marcinvxy Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 7


W tej sytuacji nie chcę wracać do tego okna ale w innych taka możliwość też będzie mi potrzebna.
Zapisane
« Odpowiedz #3 : 13:34 10/09/18 »
guest013 Offline
Advanced Python User

Zobacz profil
**

Reputacja: 20
Wiadomości: 155


Kod
from tkinter import Tk, Button
 
gui = Tk()
gui.geometry("300x200")
 
def zamknij():
   gui.destroy() # w ten sposób zamykasz obecne okno
   # tu powinien być kod otwierający nowe
 
Button(gui, text = "Wcisnij", command=zamknij).place(x=150, y=150)
 
gui.mainloop()
Zapisane

Expect nothing and you will never be dissapointed
« Odpowiedz #4 : 15:51 10/09/18 »
marcinvxy Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 7


Dzięki. A jak to mogę zrobić w moim kodzie? Chichot
Zapisane
« Odpowiedz #5 : 16:15 10/09/18 »
Guaz Offline
Advanced Python User

Zobacz profil
**

Reputacja: 38
Płeć: Mężczyzna
Wiadomości: 286


Tu w sumie taki prosty przykład ukrywania, przywracania i zamykania okna na podstawie kodu guest013 Uśmiech
Kod
from tkinter import Tk, Button
 
gui = Tk()
gui.geometry("300x200")
 
def ukryj():
   gui.withdraw() # W ten sposób ukrywasz okno
 
   #~ Tutaj tworzysz drugie okno:
   drugieokno = Tk()
   drugieokno.geometry("300x200")
   #~ Tu powinien być kod otwierający nowe zakończony poniższą linią:
   drugieokno.protocol("WM_DELETE_WINDOW", lambda: odslon(drugieokno))
   #~ ... Albo powinien tym sterować jakiś przycisk.
   drugieokno.mainloop()
 
 
def odslon(root):
   root.destroy() #~ Zamykasz nowe okno
   gui.deiconify() #~ Przywracasz stare
 
b1 = Button(gui, text = "Wcisnij", command=ukryj).place(x=150, y=150)
 
gui.mainloop()
 
Zapisane

Python 3.5.2 / Mint
« Odpowiedz #6 : 10:18 13/09/18 »
guest013 Offline
Advanced Python User

Zobacz profil
**

Reputacja: 20
Wiadomości: 155


@marcinvxy
Cytuj
A jak to mogę zrobić w moim kodzie?

Kod
class Okno(Frame):
   def __init__(self, parent):
       super().__init__(parent)
       self.przycisk()
 
   def przycisk(self):
       self.pack(fill=BOTH, expand=1)
       button1 = Button(self, text = "Wcisnij", command=self.zamknij).place(x=150, y=150)
 
   def zamknij(self):
       self.master.destroy()
 
def main():
   gui=Tk()
   gui.maxsize(300, 200)
   gui.minsize(300, 200)
   app=Okno(gui)
   gui.mainloop()
 
if __name__ == '__main__':
   main()
Zapisane

Expect nothing and you will never be dissapointed
« Odpowiedz #7 : 16:27 15/09/18 »
marcinvxy Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 7


Dzięki   Duży uśmiech  bardzo pomogliście!
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2018 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot