Tkinter python là gì
Show
GUI là viết tắt của Graphical User Interface ( giao diện đồ họa người dùng). Một cách khác để chúng ta giao tiếp với máy tính đơn giản hơn, dễ dàng hơn. Hầu như tất cả chương trình máy tính đều phải sử dụng GUI nếu muốn được phổ biến và phát triển rộng rãi. Bởi vì không phải ai cũng học lập trình, mà công việc của họ lại cần có sự trợ giúp của máy tính, máy tính thì chính xác và lưu trữ được một khối lượng công việc rất lớn. Đó cũng chính là nhiệm vụ của người lập trình viên, giúp mọi người sử dụng tài nguyên của máy tính một cách tối ưu, dễ dàng và tiết kiệm thời gian nhất. Tkinter là một thư viện tích hợp sẵn trong Python. Giúp những lập trình viên mới bắt đầu như chúng ta lập trình giao diện một cách dễ dàng. Từ đó có thể tiếp cận với những thư viện lập trình giao diện khác nhanh chóng hơn. Một số câu lệnh đầu tiên trong Tkinter.
Video làm giao diện đầu tiên với tkinter: click here
Python cung cấp các tùy chọn khác nhau để phát triển giao diện người dùng đồ họa (GUI). Quan trọng nhất được liệt kê dưới đây.
Có rất nhiều giao diện khác có sẵn, bạn có thể tìm thấy chúng trên mạng. Lập trình TkinterTkinter là thư viện GUI tiêu chuẩn cho Python. Python khi kết hợp với Tkinter cung cấp một cách nhanh chóng và dễ dàng để tạo các ứng dụng GUI. Tkinter cung cấp giao diện hướng đối tượng mạnh mẽ cho bộ công cụ Tk GUI. Tạo một ứng dụng GUI bằng Tkinter là một nhiệm vụ dễ dàng. Tất cả những gì bạn cần làm là thực hiện các bước sau:
Thí dụ#!/usr/bin/python import Tkinter top = Tkinter.Tk() # Code to add widgets will go here...top.mainloop() Điều này sẽ tạo ra một cửa sổ sau: Tkinter WidgetsTkinter cung cấp các điều khiển khác nhau, chẳng hạn như các nút, nhãn và hộp văn bản được sử dụng trong ứng dụng GUI. Các điều khiển này thường được gọi là widget. Hiện tại có 15 loại vật dụng trong Tkinter. Chúng tôi trình bày các tiện ích này cũng như mô tả ngắn gọn trong bảng sau:
Hãy để chúng tôi nghiên cứu chi tiết các widget này – Thuộc tính tiêu chuẩnChúng ta hãy xem cách một số thuộc tính phổ biến của chúng như kích thước, màu sắc và phông chữ được chỉ định.
Hãy để chúng tôi nghiên cứu chúng một cách ngắn gọn – Quản lý hình họcTất cả các widget Tkinter đều có quyền truy cập vào các phương pháp quản lý hình học cụ thể, có mục đích tổ chức các widget trong toàn bộ khu vực widget chính. Tkinter đưa ra các lớp trình quản lý hình học sau: gói, lưới và địa điểm.
GUI là viết tắt của cụm từ Graphical User Interface, có nghĩa là giao diện đồ họa người dùng. Thuật ngữ này được dùng để ám chỉ cách người dùng tương tác với các thiết bị máy tính thông qua hình ảnh, thay vì sử dụng các câu lệnh phức tạp. Sau đây VniTeach sẽ hướng dẫn lập trình giao diện GUI bằng Tkinter trong ngôn ngữ Python 1. Tạo giao diện đầu tiên#Thêm thư viện tkinter from tkinter import * #Tạo một cửa sổ mới window = Tk() #Thêm tiêu đề cho cửa sổ window.title('Welcome to VniTeach app') #Đặt kích thước của cửa sổ window.geometry('350x200') #Lặp vô tận để hiển thị cửa sổ window.mainloop()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. 2. Làm việc với labelĐối tượng này dùng để hiển thị văn bản hoặc hình ảnh. Cú phápw = Label( master, option, … ) Tham số
Ví dụ đơn giản from tkinter import * window = Tk() window.title("Welcome to VniTeach app") #Thêm label có nội dung Hello, font chữ lbl = Label(window, text="Hello", font=("Arial Bold", 50)) #Xác định vị trí của label lbl.grid(column=0, row=0) window.mainloop()2. Làm việc với ButtonNút bấm có thể hiển thị văn bản hoặc hình ảnh, chúng ta có thể thiết lập sự kiện khi chúng ta click vào nút bấm như tự động gọi hàm chẳng hạn. Cú phápw = Button( master, option = value, ... )Tham số
Phương thức
Ví dụ:from tkinter import * window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') lbl = Label(window, text="Hello") lbl.grid(column=0, row=0) #Thêm một nút nhấn Click Me btn = Button(window, text="Click Me", bg="orange", fg="red") #Thiết lập vị trí của nút nhấn có màu nền và màu chữ btn.grid(column=1, row=0) window.mainloop()Xử lý sự kiện khi nhấn nút Click Me from tkinter import * window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') lbl = Label(window, text="Hello") lbl.grid(column=0, row=0) #Hàm khi nút được nhấn def clicked(): lbl.configure(text="Button was clicked !!") #Gọi hàm clicked khi nút được nhấn btn = Button(window, text="Click Me", command=clicked) btn.grid(column=1, row=0) window.mainloop()Không nhất thiết tên hàm để xử lý sự kiện click là clicked như trên, ví dụ như sau: # !/usr/bin/python3 from tkinter import * from tkinter import messagebox top = Tk() top.geometry("100x100") def helloCallBack(): msg = messagebox.showinfo( "Hello Python", "Hello World") B = Button(top, text = "Hello", command = helloCallBack) B.place(x = 50,y = 50) top.mainloop()3. Làm việc với Textboxfrom tkinter import * window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') lbl = Label(window, text="Hello") lbl.grid(column=0, row=0) #Tạo một Textbox txt = Entry(window,width=10) #Vị trí xuất hiện của Textbox txt.grid(column=1, row=0) #Đặt vị trí con trỏ tại Textbox txt.focus() #Hàm xử lý khi nút được nhấn 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) #Để tắt chức năng nhập của Textbox bằng state #txt = Entry(window,width=10, state='disabled') window.mainloop()4. Làm việc với Comboboxfrom tkinter import * from tkinter.ttk import * window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') #Tạo hộp chọn Combobox combo = Combobox(window) #Các giá trị của hộp chọn combo['values']= (1, 2, 3, 4, 5, "Text") #Thiết lập giá trị được chọn combo.current(1) #set the selected item combo.grid(column=0, row=0) #Lấy giá trị của hộp chọn bằng combo.get() window.mainloop()5. Làm việc với Checkboxfrom tkinter import * from tkinter.ttk import * window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') #Thiết lập trạng thái của Checkbox chk_state = BooleanVar() chk_state.set(True) #set check state #Tạo Checkbox có trạng thái đã tích chọn chk = Checkbutton(window, text='Choose', var=chk_state) chk.grid(column=0, row=0) window.mainloop()6. Làm việc với Radiofrom 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()7. Làm việc với ScrolledTextfrom tkinter import * from tkinter import scrolledtext window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') txt = scrolledtext.ScrolledText(window,width=40,height=10) txt.grid(column=0,row=0) window.mainloop()8. Làm việc với Messagebox– Hộp thoại thông báo from tkinter import * from tkinter import messagebox window = Tk() window.title("Welcome to VniTeach 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()– Hộp thoại cảnh báo và lỗi – Hộp thoại câu hỏi 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')9. Làm việc với SpinBoxfrom tkinter import * window = Tk() window.title("Welcome to VniTeach app") window.geometry('350x200') #Tạo spinbox có chiều rộng 5, giá trị từ 0 đến 100 spin = Spinbox(window, from_=0, to=100, width=5) spin.grid(column=0,row=0) window.mainloop()– Liệt kê các giá trị của spinbox #spinbox chỉ gồm có 3 giá trị là 3, 5 và 10 spin = Spinbox(window, values=(3, 5, 10), width=5)– Đặt giá trị mặc định cho spinbox var =IntVar() #Đặt giá trị mặc định là 25 var.set(25) spin = Spinbox(window, from_=0, to=100, width=5, textvariable=var)10. Làm việc với trình chọn tệp và thư mụcfrom tkinter import filedialog file = filedialog.askopenfilename(filetypes = (("Text files","*.txt"),("all files","*.*"))) dir = filedialog.askdirectory()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 tkinter import filedialog from os import path file = filedialog.askopenfilename(initialdir= path.dirname(__file__)) from tkinter import * from tkinter import Menu window = Tk() window.title("Welcome to VniTeach 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()Sự kiện khi người dùng click chọn một bảng chọn nào đó: #Thực hiện hàm clicked khi người dùng chọn New new_item.add_command(label='New', command=clicked)12. Làm việc với các TabsĐể tạo một điều khiển tab, có một vài bước.
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 các khoảng cách trước và sau của mỗi tab bằng cách sử dụng các thuộc tính padx và pady . lbl1 = Label(tab1, text= 'label1', padx=5, pady=5) |