Tkinter là một gói trong Python có chứa module Tk hỗ trợ cho việc lập trình GUI. Tk ban đầu được viết cho ngôn ngữ Tcl. Sau đó Tkinter được viết ra để sử dụng Tk bằng trình thông dịch Tcl trên nền Python. Ngoài Tkinter ra còn có một số công cụ khác giúp tạo một ứng dụng GUI viết bằng Python như wxPython, PyQt, và PyGTK.
Về ngôn ngữ Python
Python là một ngôn ngữ lập trình hướng đối tượng, python hoàn toàn tạo kiểu động, cấp phát bộ nhớ động. Mục đích ra đời của Python là cung cấp một ngôn ngữ lập trình có cấu trúc rõ ràng, sáng sủa, thuận tiện cho người mới học lập trình. Python được phát triển bởi Guido và Rossum. Phiên bản đầu tiên được phát hành vào năm 1991. Python được lấy cảm hứng từ ABC, Haskell, Java, Lisp, Icon và Perl. Python là một ngôn ngữ thông dịch, đa nền tảng. Một trong những đặc điểm độc nhất của Python là ngôn ngữ này không dùng đến dấu chấm phẩy, dấu mở-đóng ngoặc {} để kết thúc câu lệnh hay khối lệnh, mà cách duy nhất để nó nhận biết một lệnh là dấu thụt đầu dòng.
Hiện tại Python có hai dòng phiên bản là dòng 2.x và 3.x. Phiên bản Python mà series này sử dụng là phiên bản 3.5.1. Ngày nay Python được phát triển bởi một cộng đồng tình nguyện trên khắp thế giới, và lẽ dĩ nhiên nó là một phần mềm mã nguồn mở.
Update: Python phiên bản 2.7.18 được phát hành vào ngày 20/04/2020 là phiên bản cuối cùng của dòng 2.x, nghĩa là từ nay Python sẽ chỉ cập nhật phiên bản 3.x trở lên.
Trang chủ của Python nằm tại địa chỉ python.org.
Ví dụ
Đoạn code dưới đây ví dụ về cách tạo một cửa sổ bằng Tkinter.
from tkinter import Tk, Frame, BOTH class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent, background="white") self.parent = parent self.initUI() def initUI(self): self.parent.title("Simple") self.pack(fill=BOTH, expand=1) root = Tk() root.geometry("250x150+300+300") app = Example(root) root.mainloop()
Đoạn code trên sẽ tạo ra một cửa sổ nhỏ trên màn hình.
from tkinter import Tk, Frame
Ở dòng trên chúng ta import hai lớp Tk
và Frame
từ gói Tkinter.
Lớp Tk
được dùng để tạo cửa sổ, lớp Frame
dùng để quản lý các widget. Chúng ta sẽ tìm hiểu về widget ở các bài sau.
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent, background="white")
Chúng ta định nghĩa lớp Excample
kế thừa từ lớp
Frame.
Lớp Frame
là một widget dùng để quản lý các widet khác – các lớp kiểu này được gọi chung là containter hoặc layout. Trong phương thức khởi tạo __init__()
chúng ta gọi lại phương thức khởi tạo từ lớp Frame
và đưa vào tham số màu nền.
self.parent = parent
Chúng ta dùng thuộc tính parent
để lưu lại đối tượng root
.
self.initUI()
Chúng ta định nghĩa phương thức initUI()
dùng để tạo các widget trên cửa sổ.
self.parent.title("Simple")
Phương thức title()
sẽ thay đổi tiêu đề cửa sổ.
self.pack(fill=BOTH, expand=1)
Phương thức pack()
có tác dụng sắp xếp vị trí các widget trước khi gắn chúng lên cửa sổ chính. Tham số fill=BOTH
sẽ dãn widget ra theo chiều ngang và chiều rộng, tức là widget đó sẽ chiếm toàn bộ không gian cửa sổ.
root = Tk()
Ở dòng trên chúng ta tạo một cửa sổ và gán vào biến root
để quản lý. Cửa sổ luôn phải được tạo trước khi tạo các widget.
root.geometry("250x150+300+300")
Phương thức geometry()
quy định kích thước cửa sổ và vị trí hiển thị trên màn hình. Hai tham số đầu tiên là kích thước cửa sổ, hai phương thức sau là vị trí của cửa sổ trên màn hình.
app = Example(root)
Dòng code trên chúng ta tạo một Frame
và gắn nó vào cửa sổ chính.
root.mainloop()
Cuối cùng là phương thức mainloop()
. Bạn cứ hiểu đơn giản là phải gọi phương thức này thì cửa sổ mới hiện lên màn hình và bắt đầu nhận các sự kiện để xử lý.
Hiển thị Button
Trong ví dụ dưới đây, chúng ta sẽ tạo nút Quit, khi bấm vào nút đó thì thoát chương trình.
from tkinter import Tk, BOTH from tkinter.ttk import Frame, Button, Style class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Quit button") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) quitButton = Button(self, text="Quit", command=self.quit) quitButton.place(x=50, y=50) root = Tk() root.geometry("250x150+300+300") app = Example(root) root.mainloop()
Chúng ta sẽ đặt một nút bấm trên cửa sổ, bấm vào nút đó thì thoát chương trình.
from tkinter.ttk import Frame, Button, Style
Một số widget trong Tkinter được hỗ trợ hiển thị màu sắc hoa lá khác nhau, thuật ngữ gọi là theme. Để sử dụng theme thì chúng ta import module ttk
vào.
self.style = Style() self.style.theme_use("default")
Để quy định kiểu theme thì chúng ta khởi tạo đối tượng Style()
và gọi tới phương thức theme_use().
Một số kiểu theme mà mình biết là clam, default, alt, và classic.
quitButton = Button(self, text="Quit", command=self.quit)
Ở dòng trên chúng ta tạo một đối tượng widget là Button
. Tham số đầu tiên là đối tượng container của nó. Tham số thứ hai là đoạn text sẽ hiển thị trên nút. Tham số thứ ba là lệnh được thực thi khi nút được bấm, ở đây là phương thức quit()
tức là thoát chương trình.
quitButton.place(x=50, y=50)
Phương thức place()
để quy định vị trí của nút bấm trên cửa sổ.