[Tips Tkinter]: Bermain Dengan Komponen Toplevel

Artikel ini kami buat bertujuan untuk menjawab pertanyaan dari seorang PythonMania, tentang bagaimana menampilkan window baru dengan meng-klik sebuah menu pada menubar. OK!…This Is Tkinter!…Selamat Menikmati.

Komponen Toplevel (Tkinter)

Toplevel merupakan komponen window yang dimiliki oleh Tkinter. Komponen ini sering digunakan untuk membuat window baru. Untuk lebih jelasnya tentang Toplevel, pelajari disini.

Nah, sekarang kita akan fokus pada program Bermain Toplevel. Berikut langkah-langkahnya:

  1. Buat dua buah file yaitu windowUtama.py dan window1.py. Simpan kedua file ini dalam satu folder. (Info: kami menggunakan Python 3)
  2. (#) File windowUtama.py

    from tkinter import *
    import window1
    
    class WindowUtama:
    	def __init__(self, parent, title):
    		self.parent = parent
    		
    		self.parent.geometry("400x300")
    		self.parent.title(title)
    		self.parent.protocol("WM_DELETE_WINDOW", self.onTutup) 
    		self.parent.resizable(False, False)
    		
    		self.aturKomponen()
    		
    	def aturKomponen(self):
    		mainFrame = Frame(self.parent, bd=10, bg="red")
    		mainFrame.pack(fill=BOTH, expand=YES)
    		
    		# label window Utama
    		Label(mainFrame, text="WINDOW UTAMA").pack(expand=YES)
    		
    		# buat menu
    		menuBar = Menu(self.parent)
    		
    		menuUtama = Menu(menuBar, tearoff=1)
    		menuUtama.add_command(label="Window-1", command=self.bukaWindow)
    		menuUtama.add_command(label="Keluar", command=self.onTutup)
    		menuBar.add_cascade(label="Utama", menu=menuUtama)
    		
    		self.parent.config(menu=menuBar)
    		
    	def bukaWindow(self, event=None):
    		app = window1.Window1(self.parent, "Ini Window 1")
    		
    	def onTutup(self, event=None):
    		self.parent.destroy()
    		
    if __name__ == '__main__':
    	root = Tk()
    	
    	app = WindowUtama(root, "Bermain TopLevel")
    	
    	root.mainloop()
    

    (#) File window1.py

    from tkinter import *
    
    class Window1(Toplevel):
    	def __init__(self, parent, title):
    		Toplevel.__init__(self, parent)
    		self.title(title)
    		self.geometry("200x100")
    		self.resizable(False, False)
    		
    		self.aturKomponen()
    		self.transient(parent)
    		self.grab_set()
    		self.wait_window()
    		
    	def aturKomponen(self):
    		mainFrame = Frame(self, bg="yellow", bd=10)
    		mainFrame.pack(fill=BOTH, expand=YES)
    		
    		Label(mainFrame, text="WINDOW - 1 -").pack(side=TOP, expand=YES)
    		
    # tes 
    if __name__ == '__main__':
    	root = Tk()
    	
    	def run():
    		import window1
    		app = window1.Window1(root, "Window 1")
    	
    	Button(root, text="Tes", command=run, width=10).pack()
    	
    	root.mainloop()
    
  3. Jalankan file windowUtama.py dengan cara:
    (*) lewat Terminal (linux), ketik $python3 windowUtama.py
    (*) lewat IDLE, ketik F5 (Run).
  4. Pilih pada menubar, Utama|Window-1. Maka akan keluar sebuah window baru.
  5. Dan hasilnya adalah …

Bagaimana menurut Anda? Mudah kan?….YES! Kita pun sekarang sudah bisa membuat program dengan tampilan MANTAP…dan program ini hanya dengan TKINTER – Python. Semoga Bermanfaat.

Salam PythonMania!

4 comments

  1. kalau setelah di import window1
    terus di command kita panggil kelasnya dengan
    window1(self.parent()), sama aja kan atau ada fungsi khusus dari toplavel ?

  2. klo bikin Internal Frame seperti Java gmn bos…..
    soalnya klo aku buka window baru sama dengan membuka aplikasi baru…

  3. Saya mau download tkinter kok tidak bisa ya?… saya googling kok tidak ketemu situsnya…
    python itu seperti java, pascal, basic, c++, dll ya mas? tkinter seperti Visual Basic 6, VB 2010, Borland Delphi, Borland C++, Netbeans, Eclipse, dll?…

    Maaf nih mas, saya belum paham…. mohon pencerahannya….🙂

    Terima kasih sebelumnya…..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s