Thứ Ba, 26 tháng 3, 2013

Tạo button có thể click được trong Python


>>> from tkinter import *   # import nội dung của tkinter module (1)
>>> tk = Tk()                    # Tạo một biến chứa một đối tượng của class Tk  (2)
>>> btn = Button(tk, text="click me")  # Tạomột button (3)
>>> btn.pack()   # Hiển thị button (4)

(1) import theo cách trên chúng ta sẽ có thể sử dụng nội dung trong module tkinter mà không cần phải gọi tên của nó. Ví dụ trong trường hợp của module turtle ta có hai cách import sau
Cách thứ nhất : import turtle
                        t = turtle.Pen()
Cách thứ hai : from turtle import *
                      t = Pen()
Sự khác nhau giữa hai cách là chúng ta có thể gọi một đối tượng trong một lớp thuộc một module mà không cần phải gọi tên module đó, điều này thuận lợi khi chúng ta muốn sử dụng nhiều class trong một module nhưng không muốn gõ nhiều chứ về bản chất hai cách trên giống nhau.

(2): Giống như việc chúng ta tạo Pen object của module turtle, tk object tạo ra một cửa sổ, trên cửa sổ ấy chúng ta có thể thêm những thứ khác, như là button, input boxes hay là một canvas để vẽ trên đó. Đó là class chính cung cấp bởi tkinter module, nếu bạn không tạo một đối tượng của Tk class bạn không thể làm bất cứ thứ gì liên quan đến đồ họa, hoạt hình.

(3) Tạo một button với tk là tham số đầu tiên, và "click me" là một text mà button sẽ display

(4) Dẫu cho ta đã add button vào cửa sổ nhưng nó sẽ không displayed cho đến khi ta enter dòng này.

click me  button lúc này chưa làm được gì cả, bạn có thể click chúng cả ngày nhưng sự thực là chẳng có gì thay đổi cả. Đóng cửa sổ ta mới tạo hồi nãy, và thực hiện một số thay đổi trong code:

Định nghĩa một hàm với nhiệm vụ in ra dòng "hello there"
def hello():
      print('Hello there')

Sửa lại đoạn code phía trên
from tkinter import *
tk = Tk()
btn = Button(tk, text = "click me", command = hello)
btn.pack()

Một sự thay đổi thấy rõ khi ta có thêm thông số command, thông số này nói cho ta biết sẽ thực hiện hàm hello khi ta click vào button.


1 nhận xét:

  1. cảm ơn bạn rất nhiều, mình đã tìm rất nhiều các trang web nhưng mik chỉ thấy web này đúng nhất, cảm ơn bạn!!!!

    Trả lờiXóa