8

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách phát triển giao diện người dùng đồ họa bằng cách viết một số ví dụ GUI Python bằng gói Tkinter.

Gói Tkinter được vận chuyển với Python như một gói tiêu chuẩn, vì vậy chúng tôi không cần phải cài đặt bất cứ thứ gì để sử dụng nó.

Tkinter là một gói rất mạnh mẽ. Nếu bạn đã cài đặt Python, bạn có thể sử dụng IDLE là IDE tích hợp được cung cấp cùng với Python, IDE này được viết bằng Tkinter. Nghe hay đấy!!

Chúng tôi sẽ sử dụng Python 3.6, vì vậy nếu bạn đang sử dụng Python 2.x, chúng tôi khuyên bạn nên chuyển sang Python 3.x trừ khi bạn biết ngôn ngữ thay đổi để bạn có thể điều chỉnh mã để chạy mà không gặp lỗi.

Tôi giả sử rằng bạn có một chút nền tảng về những  điều cơ bản của Python để giúp bạn hiểu những gì chúng tôi đang làm.

Chúng tôi sẽ bắt đầu bằng cách tạo một cửa sổ mà chúng tôi sẽ tìm hiểu cách thêm các tiện ích như nút, hộp tổ hợp, v.v. Sau đó, chúng tôi sẽ chơi với các thuộc tính của chúng, vì vậy hãy bắt đầu.

Tạo ứng dụng GUI đầu tiên của bạn

Đầu tiên, chúng tôi sẽ nhập gói THE Tkinter và tạo một cửa sổ và đặt tiêu đề của nó:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.mainloop()

Kết quả sẽ như thế này:

Tuyệt vời! Ứng dụng của chúng tôi hoạt động.

Dòng cuối cùng gọi  mainloop hàm. Hàm này gọi vòng lặp vô tận của cửa sổ, vì vậy cửa sổ sẽ chờ bất kỳ tương tác người dùng nào cho đến khi chúng ta đóng nó.

Nếu bạn quên gọi  mainloop hàm, sẽ không có gì xuất hiện cho người dùng.

Tạo một widget nhãn

Để thêm nhãn vào ví dụ trước, chúng tôi sẽ tạo nhãn bằng lớp nhãn như thế này:

lbl = Label(window, text="Hello")

Sau đó, chúng tôi sẽ đặt vị trí của nó trên biểu mẫu bằng cách sử dụng  grid hàm và cung cấp cho vị trí như thế này:

lbl.grid(column=0, row=0)

Vì vậy, mã hoàn chỉnh sẽ như thế này:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

lbl = Label(window, text="Hello")

lbl.grid(column=0, row=0)

window.mainloop()

Và đây là kết quả:

Nếu không gọi  grid chức năng cho nhãn, nó sẽ không hiển thị.

Đặt kích thước phông chữ nhãn

Bạn có thể đặt phông chữ nhãn để bạn có thể làm cho nó lớn hơn và có thể in đậm. Bạn cũng có thể thay đổi kiểu phông chữ.

Để làm như vậy, bạn có thể truyền  font tham số như thế này:

lbl = Label(window, text="Hello", font=("Arial Bold", 50))

Lưu ý rằng  font tham số có thể được truyền cho bất kỳ widget nào để thay đổi phông chữ của nó, do đó, nó áp dụng cho nhiều thứ hơn là chỉ nhãn.

Tuyệt vời, nhưng cửa sổ quá nhỏ, vậy còn việc đặt kích thước cửa sổ thì sao?

Đặt kích thước cửa sổ

Chúng ta có thể đặt kích thước cửa sổ mặc định bằng cách sử dụng  geometry chức năng như sau:

window.geometry('350x200')

Dòng trên đặt chiều rộng cửa sổ thành 350 pixel và chiều cao thành 200 pixel.

Hãy thử thêm nhiều tiện ích GUI như các nút và xem cách xử lý các sự kiện nhấp vào nút.

Thêm một tiện ích nút

Hãy bắt đầu bằng cách thêm nút vào cửa sổ. Nút được tạo và thêm vào cửa sổ giống như nhãn:

btn = Button(window, text="Click Me")

btn.grid(column=1, row=0)

Vì vậy, cửa sổ của chúng tôi sẽ như thế này:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

lbl = Label(window, text="Hello")

lbl.grid(column=0, row=0)

btn = Button(window, text="Click Me")

btn.grid(column=1, row=0)

window.mainloop()

Kết quả trông như thế này:

Lưu ý rằng chúng tôi đặt nút trên cột thứ hai của cửa sổ là 1. Nếu bạn quên và đặt nút trên cùng một cột là 0, nó sẽ chỉ hiển thị nút, vì nút sẽ ở trên cùng của nút nhãn.

Thay đổi nút tiền cảnh và màu nền

Bạn có thể thay đổi tiền cảnh của một nút hoặc bất kỳ tiện ích nào khác bằng cách sử dụng thuộc tính  fg .

Ngoài ra, bạn có thể thay đổi màu nền của bất kỳ widget nào bằng thuộc tính  bg .

btn = Button(window, text="Click Me", bg="orange", fg="red")

Bây giờ, nếu bạn đã cố bấm vào nút, không có gì xảy ra vì sự kiện nhấp của nút chưa được viết.

Xử lý nút bấm Sự kiện

Đầu tiên, chúng ta sẽ viết hàm mà chúng ta cần thực thi khi nhấp vào nút:

def clicked():

    lbl.configure(text="Button was clicked !!")

Sau đó, chúng tôi sẽ nối nó bằng nút bằng cách chỉ định chức năng như thế này:

btn = Button(window, text= "Click Me", command=clicked)

Lưu ý rằng , chúng tôi clicked chỉ gõ  không  clicked() bằng dấu ngoặc đơn.

Bây giờ mã đầy đủ sẽ như thế này:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

lbl = Label(window, text="Hello")

lbl.grid(column=0, row=0)

def clicked():

    lbl.configure(text="Button was clicked !!")

btn = Button(window, text="Click Me", command=clicked)

btn.grid(column=1, row=0)

window.mainloop()

Và khi chúng ta nhấp vào nút, kết quả, như mong đợi, trông như thế này:

Mát mẻ!

Nhận đầu vào bằng cách sử dụng lớp nhập (Hộp văn bản Tkinter)

Trong các ví dụ GUI Python trước đây, chúng ta đã thấy cách thêm các widget đơn giản, bây giờ chúng ta hãy thử lấy đầu vào của người dùng bằng  Entry lớp Tkinter (hộp văn bản Tkinter).

Bạn có thể tạo một hộp văn bản bằng Entry lớp Tkinter  như thế này:

txt = Entry(window,width=10)

Sau đó, bạn có thể thêm nó vào cửa sổ bằng cách sử dụng chức năng lưới như bình thường

Vì vậy, cửa sổ của chúng tôi sẽ như thế này:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

lbl = Label(window, text="Hello")

lbl.grid(column=0, row=0)

txt = Entry(window,width=10)

txt.grid(column=1, row=0)

def clicked():

    lbl.configure(text="Button was clicked !!")

btn = Button(window, text="Click Me", command=clicked)

btn.grid(column=2, row=0)

window.mainloop()

Và kết quả sẽ như thế này:

Bây giờ, nếu bạn nhấp vào nút, nó sẽ hiển thị cùng một thông báo cũ, nhưng còn hiển thị văn bản đã nhập trên tiện ích Entry thì sao?

Đầu tiên, bạn có thể nhận được văn bản nhập bằng cách sử dụng  get chức năng. Vì vậy, chúng ta có thể viết mã này vào chức năng được nhấp như thế này:

def clicked():

    res = "Welcome to " + txt.get()

    lbl.configure(text= res)

Nếu bạn nhấp vào nút và có văn bản trong tiện ích nhập cảnh, nó sẽ hiển thị "Chào mừng đến" được nối với văn bản đã nhập.

Và đây là mã hoàn chỉnh:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

lbl = Label(window, text="Hello")

lbl.grid(column=0, row=0)

txt = Entry(window,width=10)

txt.grid(column=1, row=0)

def clicked():

    res = "Welcome to " + txt.get()

    lbl.configure(text= res)

btn = Button(window, text="Click Me", command=clicked)

btn.grid(column=2, row=0)

window.mainloop()

Chạy mã trên và kiểm tra kết quả:

Tuyệt vời!

Mỗi lần chạy mã, chúng ta cần nhấp vào tiện ích nhập để đặt tiêu điểm để viết văn bản, nhưng còn việc đặt tiêu điểm tự động thì sao?

Đặt trọng tâm của tiện ích nhập cảnh

Điều đó thật dễ dàng, tất cả những gì chúng ta cần làm là gọi  focus hàm như thế này:

txt.focus()

Và khi bạn chạy mã của mình, bạn sẽ nhận thấy rằng tiện ích nhập cảnh có trọng tâm để bạn có thể viết văn bản của mình ngay lập tức.

Vô hiệu hóa Widget Entry

Để tắt tiện ích nhập cảnh, bạn có thể đặt thuộc tính trạng thái thành bị tắt:

txt = Entry(window,width=10, state='disabled')

Bây giờ, bạn sẽ không thể nhập bất kỳ văn bản.

Thêm tiện ích Combobox

Để thêm tiện ích combobox, bạn có thể sử dụng  Combobox lớp từ thư viện ttk như thế này:

from tkinter.ttk import *

combo = Combobox(window)

Sau đó, bạn có thể thêm các giá trị của bạn vào combobox.

from tkinter import *

from tkinter.ttk import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

combo = Combobox(window)

combo['values']= (1, 2, 3, 4, 5, "Text")

combo.current(1) #set the selected item

combo.grid(column=0, row=0)

window.mainloop()

Như bạn có thể thấy, chúng tôi thêm các mục combobox bằng cách sử dụng các giá trị tuple.

Để đặt mục đã chọn, bạn có thể chuyển chỉ mục của mục mong muốn vào chức năng hiện tại.

Để có được mục chọn, bạn có thể sử dụng  get chức năng như thế này:

combo.get()

Thêm tiện ích Checkbutton (Hộp kiểm Tkinter)

Để tạo tiện ích nút kiểm tra, bạn có thể sử dụng  Checkbutton lớp như thế này:

chk = Checkbutton(window, text='Choose')

Ngoài ra, bạn có thể đặt trạng thái đã kiểm tra bằng cách chuyển giá trị kiểm tra vào Nút kiểm tra như thế này:

from tkinter import *

from tkinter.ttk import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

chk_state = BooleanVar()

chk_state.set(True) #set check state

chk = Checkbutton(window, text='Choose', var=chk_state)

chk.grid(column=0, row=0)

window.mainloop()

Kiểm tra kết quả:

Đặt trạng thái kiểm tra của một nút kiểm tra

Ở đây chúng ta tạo một biến loại  BooleanVar không phải là biến Python tiêu chuẩn, đó là biến Tkinter và sau đó chúng ta chuyển nó đến lớp Checkbutton để đặt trạng thái kiểm tra làm dòng được tô sáng trong ví dụ trên.

Bạn có thể đặt giá trị Boolean thành false để bỏ chọn.

Ngoài ra, bạn có thể sử dụng  IntVar thay vì  BooleanVar và đặt giá trị thành 0 hoặc 1.

chk_state = IntVar()

chk_state.set(0) #uncheck

chk_state.set(1) #check

Những ví dụ này cho kết quả tương tự như  BooleanVar.

Thêm tiện ích nút radio

Để thêm các nút radio, bạn có thể sử dụng  RadioButton lớp như thế này:

rad1 = Radiobutton(window,text='First', value=1)

Lưu ý rằng bạn nên đặt giá trị cho mỗi nút radio với một giá trị khác, nếu không, chúng sẽ không hoạt động.

from tkinter import *

from tkinter.ttk import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

rad1 = Radiobutton(window,text='First', value=1)

rad2 = Radiobutton(window,text='Second', value=2)

rad3 = Radiobutton(window,text='Third', value=3)

rad1.grid(column=0, row=0)

rad2.grid(column=1, row=0)

rad3.grid(column=2, row=0)

window.mainloop()

Kết quả của đoạn mã trên trông như thế này:

Ngoài ra, bạn có thể đặt lệnh của bất kỳ nút radio nào trong số các chức năng cụ thể, vì vậy nếu người dùng nhấp vào bất kỳ nút nào trong số đó, nó sẽ chạy mã chức năng.

Đây là một ví dụ:

rad1 = Radiobutton(window,text='First', value=1, command=clicked)

def clicked():

# Do what you need

Khá đơn giản!

Nhận giá trị nút radio (Nút radio đã chọn)

Để có được nút radio hiện được chọn hoặc giá trị của nút radio, bạn có thể chuyển tham số biến cho các nút radio và sau đó bạn có thể nhận giá trị của nút đó.

from tkinter import *

from tkinter.ttk import *

window = Tk()

window.title("Welcome to LikeGeeks app")

selected = IntVar()

rad1 = Radiobutton(window,text='First', value=1, variable=selected)

rad2 = Radiobutton(window,text='Second', value=2, variable=selected)

rad3 = Radiobutton(window,text='Third', value=3, variable=selected)

def clicked():

   print(selected.get())

btn = Button(window, text="Click Me", command=clicked)

rad1.grid(column=0, row=0)

rad2.grid(column=1, row=0)

rad3.grid(column=2, row=0)

btn.grid(column=3, row=0)

window.mainloop()


Mỗi khi bạn chọn một nút radio, giá trị của biến sẽ được thay đổi thành giá trị của nút radio được chọn.

Thêm một Widget ScrolledText (Tkinter textarea)

Để thêm tiện ích ScrolledText, bạn có thể sử dụng  ScrolledText lớp như thế này:

from tkinter import scrolledtext

txt = scrolledtext.ScrolledText(window,width=40,height=10)

Ở đây chúng tôi chỉ định chiều rộng và chiều cao của tiện ích ScrolledText, nếu không, nó sẽ lấp đầy toàn bộ cửa sổ.

from tkinter import *

from tkinter import scrolledtext

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

txt = scrolledtext.ScrolledText(window,width=40,height=10)

txt.grid(column=0,row=0)

window.mainloop()

Kết quả như bạn có thể thấy:

Đặt nội dung Scrolledtext

Để đặt nội dung scrolledtext, bạn có thể sử dụng  insert phương pháp như sau:

txt.insert(INSERT,'You text goes here')

Xóa / Xóa nội dung Scrolledtext

Để xóa nội dung của tiện ích cuộn, bạn có thể sử dụng  delete phương pháp như sau:

txt.delete(1.0,END)

Tuyệt quá!

Tạo một hộp thông báo

Để hiển thị hộp thông báo bằng Tkinter, bạn có thể sử dụng thư viện hộp thư như thế này:

from tkinter import messagebox

messagebox.showinfo('Message title','Message content')

Khá dễ dàng!

Hãy hiển thị hộp thông báo khi người dùng nhấp vào nút.

from tkinter import *

from tkinter import messagebox

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

def clicked():

    messagebox.showinfo('Message title', 'Message content')

btn = Button(window,text='Click here', command=clicked)

btn.grid(column=0,row=0)

window.mainloop()

Khi bạn nhấp vào nút, một hộp thông báo thông tin sẽ xuất hiện.

Hiển thị thông báo cảnh báo và lỗi

Bạn có thể hiển thị một thông báo cảnh báo hoặc thông báo lỗi theo cùng một cách. Điều duy nhất cần thay đổi là chức năng tin nhắn

messagebox.showwarning('Message title', 'Message content')  #shows warning message

messagebox.showerror('Message title', 'Message content')    #shows error message

Hiển thị hộp thoại hỏi câu hỏi

Để hiển thị hộp thông báo có / không cho người dùng, bạn có thể sử dụng một trong các messagebox chức năng sau  :

from tkinter import messagebox

res = messagebox.askquestion('Message title','Message content')

res = messagebox.askyesno('Message title','Message content')

res = messagebox.askyesnocancel('Message title','Message content')

res = messagebox.askokcancel('Message title','Message content')

res = messagebox.askretrycancel('Message title','Message content')

Bạn có thể chọn kiểu tin nhắn phù hợp theo nhu cầu của bạn. Chỉ cần thay thế  showinfo dòng chức năng từ dòng trước và chạy nó.

Ngoài ra, bạn có thể kiểm tra nút nào đã được nhấp bằng biến kết quả.

Nếu bạn bấm OK hoặc hoặc thử lại , nó sẽ trả về True  là giá trị, nhưng nếu bạn chọn không hoặc hủy , nó sẽ trả về Sai .

Hàm duy nhất trả về một trong ba giá trị là  askyesnocancel hàm; nó trả về Đúng hoặc Sai hoặc Không có .

Thêm một SpinBox (Tiện ích số)

Để tạo tiện ích Spinbox, bạn có thể sử dụng  Spinbox lớp như thế này:

spin = Spinbox(window, from_=0, to=100)

Ở đây chúng tôi tạo một tiện ích Spinbox và chúng tôi chuyển từ_ và đến các tham số để chỉ định phạm vi số cho Spinbox.

Ngoài ra, bạn có thể chỉ định chiều rộng của tiện ích bằng cách sử dụng tham số chiều rộng:

spin = Spinbox(window, from_=0, to=100, width=5)

Kiểm tra ví dụ đầy đủ:

from tkinter import *

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

spin = Spinbox(window, from_=0, to=100, width=5)

spin.grid(column=0,row=0)

window.mainloop()

Bạn có thể chỉ định các số cho Spinbox thay vì sử dụng toàn bộ phạm vi như thế này:

spin = Spinbox(window, values=(3, 8, 11), width=5)

Ở đây, tiện ích Spinbox chỉ hiển thị 3 số này: 3, 8 và 11.

Đặt giá trị mặc định cho Spinbox

Để đặt giá trị mặc định của Spinbox, bạn có thể chuyển giá trị cho  textvariable tham số như sau:

var =IntVar()

var.set(36)

spin = Spinbox(window, from_=0, to=100, width=5, textvariable=var)

Bây giờ, nếu bạn chạy chương trình, nó sẽ hiển thị 36 làm giá trị mặc định cho Spinbox.

Thêm tiện ích thanh tiến trình

Để tạo một thanh tiến trình, bạn có thể sử dụng  progressbar lớp như thế này:

from tkinter.ttk import Progressbar

bar = Progressbar(window, length=200)

Bạn có thể đặt giá trị thanh tiến trình như thế này:

bar['value'] = 70

Bạn có thể đặt giá trị này dựa trên bất kỳ quy trình nào bạn muốn như tải xuống tệp hoặc hoàn thành tác vụ.

Thay đổi màu thanh tiến trình

Thay đổi màu Progressbar là một chút khó khăn.

Đầu tiên, chúng ta sẽ tạo một kiểu và đặt màu nền và cuối cùng là đặt kiểu đã tạo thành Thanh tiến trình.

Kiểm tra ví dụ sau:

from tkinter import *

from tkinter.ttk import Progressbar

from tkinter import ttk

window = Tk()

window.title("Welcome to LikeGeeks app")

window.geometry('350x200')

style = ttk.Style()

style.theme_use('default')

style.configure("black.Horizontal.TProgressbar", background='black')

bar = Progressbar(window, length=200, style='black.Horizontal.TProgressbar')

bar['value'] = 70

bar.grid(column=0, row=0)

window.mainloop()

Và kết quả sẽ như thế này:

Thêm hộp thoại tệp (Trình chọn tệp và thư mục)

Để tạo hộp thoại tệp (trình chọn tệp), bạn có thể sử dụng  filedialog lớp như thế này:

from tkinter import filedialog

file = filedialog.askopenfilename()

Sau khi bạn chọn một tệp và nhấp vào mở, biến tệp sẽ giữ đường dẫn tệp đó.

Ngoài ra, bạn có thể yêu cầu nhiều tệp như thế này:

files = filedialog.askopenfilenames()

Chỉ định loại tệp (Phần mở rộng tệp bộ lọc)

Bạn có thể chỉ định các loại tệp cho hộp thoại tệp bằng  filetypes tham số, chỉ cần chỉ định các phần mở rộng trong bộ dữ liệu.

file = filedialog.askopenfilename(filetypes = (("Text files","*.txt"),("all files","*.*")))

Bạn có thể yêu cầu một thư mục bằng  askdirectory phương thức:

dir = filedialog.askdirectory()

Bạn có thể chỉ định thư mục ban đầu cho hộp thoại tệp bằng cách chỉ định  initialdir như thế này:

from os import path

file = filedialog.askopenfilename(initialdir= path.dirname(__file__))

Dễ dàng!

Thêm một thanh menu

Để thêm một thanh menu, bạn có thể sử dụng  menu lớp như thế này:

from tkinter import Menu

menu = Menu(window)

menu.add_command(label='File')

window.config(menu=menu)

Đầu tiên, chúng tôi tạo một menu, sau đó chúng tôi thêm nhãn đầu tiên của chúng tôi và cuối cùng, chúng tôi gán menu cho cửa sổ của chúng tôi.

Bạn có thể thêm các mục menu dưới bất kỳ menu nào bằng cách sử dụng  add_cascade() chức năng như thế này:

menu.add_cascade(label='File', menu=new_item)

Vì vậy, mã của chúng tôi sẽ như thế này:

from tkinter import *

from tkinter import Menu

window = Tk()

window.title("Welcome to LikeGeeks app")

menu = Menu(window)

new_item = Menu(menu)

new_item.add_command(label='New')

menu.add_cascade(label='File', menu=new_item)

window.config(menu=menu)

window.mainloop()

Bằng cách này, bạn có thể thêm bao nhiêu mục menu như bạn muốn.

from tkinter import *

from tkinter import Menu

window = Tk()

window.title("Welcome to LikeGeeks app")

menu = Menu(window)

new_item = Menu(menu)

new_item.add_command(label='New')

new_item.add_separator()

new_item.add_command(label='Edit')

menu.add_cascade(label='File', menu=new_item)

window.config(menu=menu)

window.mainloop()

Ở đây chúng tôi thêm một mục menu khác gọi là Chỉnh sửa bằng dấu tách menu.

Bạn có thể nhận thấy một đường đứt nét ở đầu, tốt, nếu bạn nhấp vào dòng đó, nó sẽ hiển thị các mục menu trong một cửa sổ nhỏ riêng biệt.

Bạn có thể tắt tính năng này bằng cách vô hiệu hóa  tearoff tính năng như thế này:

new_item = Menu(menu, tearoff=0)

Chỉ cần thay thế  new_item trong ví dụ trên bằng ví dụ này và nó sẽ không hiển thị đường đứt nét nữa.

Tôi không cần phải nhắc bạn rằng bạn có thể nhập bất kỳ mã nào hoạt động khi người dùng nhấp vào bất kỳ mục menu nào bằng cách chỉ định thuộc tính lệnh.

new_item.add_command(label='New', command=clicked)

Thêm một Widget Notebook (Điều khiển tab)

Để tạo một điều khiển tab, có một vài bước.

  • Đầu tiên, chúng ta tạo một điều khiển tab bằng cách sử dụng  Notebook lớp.
  • Tạo một tab bằng cách sử dụng  Frame lớp.
  • Thêm tab đó vào điều khiển tab.
  • Đóng gói điều khiển tab để nó hiển thị trong cửa sổ.
from tkinter import *

from tkinter import ttk

window = Tk()

window.title("Welcome to LikeGeeks app")

tab_control = ttk.Notebook(window)

tab1 = ttk.Frame(tab_control)

tab_control.add(tab1, text='First')

tab_control.pack(expand=1, fill='both')

window.mainloop()

Bằng cách này, bạn có thể thêm bao nhiêu tab tùy thích.

Thêm Widgets vào Notebook

Sau khi tạo các tab, bạn có thể đặt các widget bên trong các tab này bằng cách gán thuộc tính cha cho tab mong muốn.

from tkinter import *

from tkinter import ttk

window = Tk()

window.title("Welcome to LikeGeeks app")

tab_control = ttk.Notebook(window)

tab1 = ttk.Frame(tab_control)

tab2 = ttk.Frame(tab_control)

tab_control.add(tab1, text='First')

tab_control.add(tab2, text='Second')

lbl1 = Label(tab1, text= 'label1')

lbl1.grid(column=0, row=0)

lbl2 = Label(tab2, text= 'label2')

lbl2.grid(column=0, row=0)

tab_control.pack(expand=1, fill='both')

window.mainloop()

Thêm khoảng cách cho các widget (Padding)

Bạn có thể thêm phần đệm cho các điều khiển của mình để làm cho nó trông có tổ chức tốt bằng cách sử dụng các  thuộc tính padx và  pady .

Chỉ cần vượt qua  padx và  pady đến bất kỳ widget nào và cung cấp cho họ một giá trị.

lbl1 = Label(tab1, text= 'label1', padx=5, pady=5)

Nó đơn giản mà!

Trong hướng dẫn này, chúng tôi đã thấy nhiều ví dụ GUI Python sử dụng thư viện Tkinter và chúng tôi đã thấy việc phát triển giao diện đồ họa bằng cách sử dụng nó dễ dàng như thế nào.

Hướng dẫn này bao gồm các khía cạnh chính của phát triển GUI Python, nhưng không phải tất cả chúng. Không có hướng dẫn hoặc một cuốn sách có thể bao gồm tất cả mọi thứ.

Tôi hy vọng bạn tìm thấy những ví dụ hữu ích. Hãy quay lại nhé.

Cảm ơn bạn.

|