Python: Bài 1. Giới thiệu về Tkinter

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Tkinter là một gói trong Python có chứa module Tk hỗ trợ cho việc lập trình giao diện (GUI). Tk ban đầu được viết cho ngôn ngữ TclSau đó 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 logo

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.x. 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ở.

Trang chủ của Python nằm tại địa chỉ python.org.

Để sử dụng được tkinter ta cần download Pillow theo các link sau:

http://v1study.com/public/share/pillow610x86py37.zip (X86)

http://v1study.com/public/share/pillow610x64py37.zip (X64)

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, BOTH

Ở 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 Example kế thừa từ lớp Frame. Lớp Frame là một widget dùng để quản lý các widget 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ý.

Capture

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à clamdefaultalt, 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ổ.

Capture

» Tiếp: Bài 2. Tìm hiểu về Layout
« Trước: Vẽ và tô màu cho hình đa giác bất kỳ với Turtle
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!