/ / Cách xây dựng Lịch GUI bằng Python

Cách xây dựng Lịch GUI bằng Python

Xây dựng lịch là một cách tuyệt vời để tìm hiểu về cách tạo ứng dụng GUI bằng mô-đun Tkinter của Python. Bạn có thể sử dụng ứng dụng này để quản lý và lên kế hoạch trước cho các sự kiện.


Tiến xa hơn, bạn có thể mở rộng ứng dụng để theo dõi các cuộc họp sắp tới và đặt lời nhắc. Bạn thậm chí có thể giới thiệu tính năng cộng tác với lịch của những người dùng khác để tránh xung đột về lịch biểu.

Tất cả bắt đầu với khung cơ bản của ứng dụng Lịch GUI.


Các mô-đun Lịch, Tkinter và DateTime

Để xây dựng Lịch GUI, bạn sẽ sử dụng Lịch, Tkinter và Mô-đun DateTime. Mô-đun Lịch đi kèm với Python và cho phép bạn thực hiện các hành động liên quan đến ngày, tháng và lịch.

Tkinter cho phép bạn tạo các ứng dụng máy tính để bàn. Nó cung cấp nhiều tiện ích, thư viện hữu ích, đối tượng canvas và trình phân tích cú pháp HTML/XML/PDF. Để xây dựng một ứng dụng GUI, tất cả những gì bạn cần làm là:

  1. Nhập thư viện.
  2. Tạo một cửa sổ.
  3. Thêm widget vào cửa sổ đó.
  4. Gọi vòng lặp sự kiện chính để thực hiện các hành động dựa trên tương tác của người dùng.

Để cài đặt Tkinter vào hệ thống của bạn, hãy mở terminal và chạy:

 pip install tkinter 

Mô-đun DateTime là một mô-đun khác được tích hợp sẵn. Nó cung cấp một số lớp có thể xử lý ngày, giờ và khoảng thời gian. Với mô-đun này, bạn có thể xây dựng bộ lập lịch sự kiện, đồng hồ báo thức, máy tính ngày và ứng dụng múi giờ.

Cách xây dựng Lịch GUI bằng Python

Bạn có thể tìm mã nguồn của Lịch GUI bằng Python trong kho lưu trữ GitHub này.

Bắt đầu bằng cách nhập mô-đun Tkinter, Lịch và DateTime. Xác định một chức năng, inLịch. Sử dụng lấy() trên Spinbox (được xác định sau trong mã) để trích xuất tháng và năm mà người dùng đã chọn. Chuyển các giá trị này tới mô-đun lịch để nhận lịch văn bản được định dạng đại diện cho năm và tháng đã chỉ định. Văn bản này đại diện cho một lưới đơn cách đơn giản, với các ngày được sắp xếp theo tuần bắt đầu từ Thứ Hai.

Xóa mọi dữ liệu hiện có khỏi màn hình. 1.0 cho biết phần đầu của trường và kết thúc cho biết phần cuối của trường. Cuối cùng, chèn lịch đã tạo trước đó và hiển thị nó trên màn hình.

 from tkinter import *
import calendar
from datetime import date

def printCalendar():
    month = int(month_box.get())
    year = int(year_box.get())
    output_calendar = calendar.month(year, month)
    calendar_field.delete(1.0, 'end')
    calendar_field.insert('end', output_calendar)

Xác định một chức năng, cài lại. Xóa nội dung trên màn hình và đặt tháng và năm thành hiện tại và sử dụng cấu hình() phương pháp để hiển thị nó trên màn hình.

 def reset():
    calendar_field.delete(1.0, 'end')
    month_var.set(current_month)
    year_var.set(current_year)
    month_box.config(textvariable=month_var)
    year_box.config(textvariable=year_var)

Xác định một chức năng, đóng để hủy hiển thị cửa sổ và thoát khỏi chương trình.

 def close():
    guiWindow.destroy()

Khởi tạo phiên bản Tkinter và hiển thị cửa sổ gốc. Đặt tiêu đề, kích thước tính bằng pixel và vô hiệu hóa thay đổi kích thước của nó bằng cách giữ các tham số là 0.

 if __name__ == "__main__":
    guiWindow = Tk()
    guiWindow.title("GUI Calendar")
    guiWindow.geometry('500x550')
    guiWindow.resizable(0, 0)

Xác định bốn khung cho tiêu đề đầu trang, mục nhập tháng và năm, màn hình và các nút. Nó thực hiện chức năng của một thùng chứa, chỉ đạo vị trí của các vật dụng khác. Nó sắp xếp bố cục và cung cấp phần đệm cho các tiện ích này bằng cách sử dụng các phần hình chữ nhật trên màn hình.

Sắp xếp các khung thành các khối trước khi đặt chúng vào guiwindow bằng cách sử dụng đóng gói() phương pháp. Đặt giá trị của expand thành true để cho phép tiện ích thay đổi kích thước và mở rộng trong không gian có sẵn của tiện ích. Đặt đổ đầy thuộc tính cho cả hai để cho phép tiện ích mở rộng chiếm toàn bộ cửa sổ theo hướng x và y.

     header_frame = Frame(guiWindow)
    entry_frame = Frame(guiWindow)
    result_frame = Frame(guiWindow)
    button_frame = Frame(guiWindow)

    header_frame.pack(expand=True, fill="both")
    entry_frame.pack(expand=True, fill="both")
    result_frame.pack(expand=True, fill="both")
    button_frame.pack(expand=True, fill="both")

Chỉ định ba nhãn cho tiêu đề, tháng và năm. Đặt cửa sổ mẹ mà bạn muốn đặt nó vào, văn bản nó sẽ hiển thị, kiểu phông chữ cùng với màu phông chữ. Đóng gói và đặt nhãn ở vị trí thích hợp. Kết hợp IntVar() với entry_frame để đặt và nhận dữ liệu số nguyên.

     header_label = Label(header_frame, text="CALENDAR",
       font=('arial', '45', 'bold'), fg="#A020F0")

    header_label.pack(expand=True, fill="both")

    month_label = Label(entry_frame, text="Month:",
       font=("arial", "20", "bold"), fg="#000000")

    year_label = Label(entry_frame, text="Year:",
       font=("arial", "20", "bold"), fg="#000000")

    month_label.place(x=30, y=0)
    year_label.place(x=275, y=0)
    month_var = IntVar(entry_frame)
    year_var = IntVar(entry_frame)

Lấy tháng, năm hiện tại và đặt nó vào biến IntVar(). Sử dụng tiện ích Spinbox để chỉ định phạm vi giá trị cho người dùng. Đặt phạm vi giá trị mà Spinbox sẽ chứa, chiều rộng, giá trị hiện tại mà nó sẽ giữ và kiểu phông chữ. Đặt các hộp một cách thích hợp.

     current_month = date.today().month
    current_year = date.today().year
    month_var.set(current_month)
    year_var.set(current_year)

    month_box = Spinbox(entry_frame, from_=1, to=12, width="10",
       textvariable=month_var, font=('arial','15'))

    year_box = Spinbox(entry_frame, from_=0000, to=3000, width="10",
       textvariable=year_var,font=('arial','15'))

    month_box.place(x=130, y=5)
    year_box.place(x=360, y=5)

Khai báo một trường văn bản và đặt cửa sổ chính, chiều rộng, chiều cao, kiểu phông chữ, kiểu hoạt hình 3D và chiều rộng đường viền. Sắp xếp tiện ích văn bản và khai báo ba nút để hiển thị, đặt lại và đóng cửa sổ. Các nút chứa thuộc tính màu nền bổ sung và thuộc tính lệnh.

Sử dụng thuộc tính lệnh, bạn có thể đặt chức năng mà nó sẽ thực thi sau khi được nhấp. Đặt các nút trong một hàng với khoảng cách rộng rãi giữa mỗi nút.

     calendar_field = Text(result_frame, width=20, height=8,
       font=("courier", "18"), relief=RIDGE, borderwidth=2)

    calendar_field.pack()

    display_button = Button(button_frame, text="DISPLAY", bg="#A020F0",
       fg="#E0FFFF", command=printCalendar, font=('arial', '15'))

    reset_button = Button(button_frame, text="RESET", bg="#A020F0",
       fg="#E0FFFF", command=reset, font=('arial','15'))

    close_button = Button(button_frame, text="CLOSE", bg="#A020F0",
       fg="#E0FFFF", command=close, font=('arial','15'))

    display_button.place(x=55, y=0)
    reset_button.place(x=210, y=0)
    close_button.place(x=350, y=0)

Các vòng lặp chính() chức năng yêu cầu Python chạy vòng lặp sự kiện Tkinter và lắng nghe các sự kiện (chẳng hạn như nhấn nút) cho đến khi bạn đóng cửa sổ.

     guiWindow.mainloop() 

Đặt tất cả các mã lại với nhau để xem lịch GUI của bạn đang hoạt động.

Đầu ra mẫu của Lịch GUI

Khi chạy chương trình trên, chương trình sẽ hiển thị một cửa sổ với tháng và ngày hiện tại. Nút Đặt lại hiển thị cùng một màn hình khi được nhấp.

Đầu ra của Lịch GUI bằng Python

Khi đặt tháng thành 3 và năm thành 2000, chương trình sẽ hiển thị lịch cho tháng 3 năm 2000. Khi nhấn nút Đóng, chương trình sẽ hủy cửa sổ và dừng thực thi.

Đầu ra của GUI Calender cho tháng 3 năm 2000 bằng Python

Thực hiện một số dự án GUI dành cho người mới bắt đầu bằng Python

Xây dựng các ứng dụng GUI chưa bao giờ dễ dàng hơn thế. Mô-đun Tkinter của Python cung cấp nhiều tiện ích hữu ích mà bạn có thể tùy chỉnh hoàn toàn với rất ít mã. Cùng với điều này, bạn có quyền truy cập vào các trình quản lý bố cục như gói, lưới và vị trí để định vị các phần tử theo mong muốn của mình.

Bạn có thể tạo trò chơi kiểm tra đánh máy, bảng màu, công cụ chuyển đổi tiền tệ hoặc máy tính để bắt đầu. Các ứng dụng này rất thú vị để xây dựng và sẽ phát triển các kỹ năng lập trình hướng đối tượng của bạn một cách dễ dàng.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *