PxExl-3. SỬ DỤNG PYTHON TKINTER TẠO GIAO DIỆN PHẦN MỀM (P3: HÀM FOCUS, WIDGET COMBOBOX)

I. Các Tiện Ích Nút và Nhập Văn Bản (Tiếp theo)

Tiếp nối bài trước, chúng ta đã xây dựng được đoạn code như hình dưới.

Bây giờ, giả sử ta nhập tên nhân viên là “Nguyễn Văn A” và chúng ta muốn phần ” Đã nhập” hiển thị thành “Đã nhập Nguyễn Văn A”, ta sẽ sử dụng chức năng get()
Khi đó, câu lệnh sẽ thay đổi thành:
def clicked():
res = “Đã nhập ” + txt.get()
lbl.configure(text= res)
Kết quả trả ra như hình dưới:

Lưu ý: tại câu lệnh dòng 10, do width = 10 làm phần Entry nhập liệu khá nhỏ, nên chúng tôi đã chỉnh width = 20 để vùng Entry dài hơn.

Bây giờ, nếu chúng ta muốn vị trí con trỏ luôn nằm trong khung nhập liệu (Entry) của Tên nhân viên, chúng ta sẽ dùng lệnh focus(), có dạng:
txt.focus()

Nếu muốn vô hiệu hoá Widget Entry, ta sử dụng câu lệnh:
txt = Entry(window,width=20, state=’disabled’)

II. Tiện ích ComboBox (Hộp lựa chọn)

Để thêm tiện ích ComboBox (Hộp lựa chọn), các bạn sử dụng class ComboBox từ thư viện ttk như sau:
from tkinter.ttk import *
combo = Combobox(window)
Sau đó, ta thêm các giá trị vào combobox như sau:
combo = Combobox(window)
combo[‘values’]= (1, 2, 3, 4, 5, “Text”)
combo.current(1) #set the selected item
combo.grid(column=0, row=0)
Chúng ta sẽ xây dựng GUI như đoạn code dưới đây:

from tkinter import * #Import module tkinter
from tkinter.ttk import * #Import modeule tkinter ttk
window = Tk() #Tạo cửa số chính
#Đặt Title là “App quản lý nhân sự”
window.title(“App quản lý nhân sự”)
#Tạo Label có tên là “Tên nhân viên”, font Arial, size 14
lbl = Label(window, text = “Tên nhân viên”, font = (“Arial”,14))
#Đặt Label ở vị trí row trên cùng, column ngoài cùng bên trái
lbl.grid(row = 0, column = 0)
#Tạo hộp lựa chọn Combobox, chiều rộng 20 pixel
combo = Combobox(window, width=20)
#Tạo các giá trị lựa chọn cho ComboBox
combo[‘value’] = (“Mr A”, ‘Mr B’, “Miss C”, “Miss D”)
#Hiển thị giá trị trong Combobox có index = 0
combo.current(0)
#Đặt vị trí cho Combobox
combo.grid(row = 0, column = 1)
#Tạo hàm thực thi khi click vào button
def clicked():
    res = “Đã nhập ” + combo.get() #Dùng phương thức get để nhập liệu
    lbl.configure(text= res)
#Tạo nút Button và liên kết với phần click
btn = Button(window, text= “Nhập liệu”, command=clicked)
#Button ở vị trí row trên cùng, column thứ 3 từ trái sáng
btn.grid(row = 0, column=2)
#Đặt kích thước cho cửa số, rộng 500 pixel, cao 200 pixel 
window.geometry(‘500×200’)
#Gọi vòng lặp sự kiện chính 
window.mainloop()

III. Ví dụ cho tiện ích ComboBox

Ví dụ 1 (Tạo combobox với giá trị mặc định)

from tkinter import * #Import tkinter
from tkinter.ttk import * #Import ttk
# Creating tkinter window
window = Tk()
window.title(‘List of months’) #Tạo title
window.geometry(‘500×250’) #Tạo kích thước
# label text for title
title_lbl = Label(window, text = “List of months Combobox”, 
          background = ‘green’, foreground =”white”, 
          font = (“Times New Roman”, 15)).grid(row = 0, column = 1)
# label
lbl = Label(window, text = “Select the Month :”,
          font = (“Times New Roman”, 10)).grid(column = 0,
          row = 5, padx = 10, pady = 25)
# Combobox creation
n = StringVar()
monthchoosen = Combobox(window, width = 27, textvariable = n)
# Adding combobox drop down list
monthchoosen[‘values’] = (‘ January’, 
                          ‘ February’,
                          ‘ March’,
                          ‘ April’,
                          ‘ May’,
                          ‘ June’,
                          ‘ July’,
                          ‘ August’,
                          ‘ September’,
                          ‘ October’,
                          ‘ November’,
                          ‘ December’)
monthchoosen.grid(column = 1, row = 5)
monthchoosen.current() #Lựa chọn giá trị mặc định
window.mainloop()

Kết quả trả ra như hình

IV. Kết Luận

Như vậy, chúng tôi đã tiếp tục giới thiệu tới các bạn các khái niệm cơ bản của Tkinter trong Python. Nếu có vấn đề nào chưa rõ, các bạn hãy liên hệ với chúng tôi để được giúp đỡ.

Trả lời

Email 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 *