Tkinter – Giới thiệu về Tkinter


Được đăng vào ngày 30/01/2016 | 4 bình luận
Tkinter – Giới thiệu về Tkinter
5 (100%) 3 votes

 

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

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 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ý.
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à 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ổ.

Capture






Bình luận (4)

  1. trịnh việt vũ

    em muốn tạo nhiều widget thì phải làm s? nếu tạo thêm một class nữa để quản lý các widget khác được không? cảm ơn ad

        1. Phở Code Admin

          bạn có thể viết một phương thức để tạo một cửa sổ, sau đó gọi đến phương thức này trong tham số command của Button()

Trả lời


Lưu ý: bọc code trong cặp thẻ [code language="x"][/code] để highlight code.


Ví dụ:


[code language="cpp"]


std::cout << "Hello world";


[/code]



Các ngôn ngữ được hỗ trợ gồm: actionscript3, bash, clojure, coldfusion, cpp, csharp, css, delphi, diff, erlang, fsharp, go, groovy, html, java, javafx, javascript, latex, matlab, objc, perl, php, powershell, python, r, ruby, scala, sql, text, vb, xml.

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *