Tôi có thể sử dụng tkinter trong html không?
Python có rất nhiều khung GUI, nhưng Tkinter là khung duy nhất được tích hợp trong thư viện chuẩn Python. Tkinter có một số điểm mạnh. Đó là nền tảng chéo, vì vậy cùng một mã hoạt động trên Windows, macOS và Linux. Các phần tử trực quan được kết xuất bằng cách sử dụng các phần tử hệ điều hành gốc, vì vậy các ứng dụng được xây dựng bằng Tkinter trông giống như chúng thuộc về nền tảng nơi chúng chạy Show
Mặc dù Tkinter được coi là khung GUI Python trên thực tế, nhưng nó không phải là không bị chỉ trích. Một lời chỉ trích đáng chú ý là GUI được xây dựng bằng Tkinter trông đã lỗi thời. Nếu bạn muốn có một giao diện hiện đại, bóng bẩy thì Tkinter có thể không phải là thứ bạn đang tìm kiếm Tuy nhiên, Tkinter nhẹ và tương đối dễ sử dụng so với các khung khác. Điều này làm cho nó trở thành một lựa chọn hấp dẫn để xây dựng các ứng dụng GUI bằng Python, đặc biệt là đối với các ứng dụng không cần ánh sáng hiện đại và ưu tiên hàng đầu là nhanh chóng xây dựng thứ gì đó có chức năng và đa nền tảng. Trong hướng dẫn này, bạn sẽ học cách
Ghi chú. Hướng dẫn này được điều chỉnh từ chương “Giao diện người dùng đồ họa” của Python Basics. Giới thiệu thực tế về Python 3 Cuốn sách sử dụng trình soạn thảo IDLE tích hợp sẵn của Python để tạo và chỉnh sửa các tệp Python cũng như tương tác với trình bao Python. Trong hướng dẫn này, các tham chiếu đến IDLE đã bị xóa để chuyển sang ngôn ngữ tổng quát hơn Phần lớn tài liệu trong hướng dẫn này không thay đổi và bạn sẽ không gặp vấn đề gì khi chạy mã ví dụ từ trình chỉnh sửa và môi trường bạn chọn Khi bạn đã thành thạo các kỹ năng này bằng cách thực hiện các bài tập ở cuối mỗi phần, bạn sẽ kết hợp mọi thứ lại với nhau bằng cách xây dựng hai ứng dụng. Đầu tiên là bộ chuyển đổi nhiệt độ và thứ hai là trình soạn thảo văn bản. Đã đến lúc đi sâu vào tìm hiểu cách xây dựng ứng dụng với Tkinter Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới Lấy bài kiểm tra. Kiểm tra kiến thức của bạn với bài kiểm tra tương tác “Lập trình GUI Python với Tkinter” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian Lấy bài kiểm tra " Xây dựng ứng dụng GUI Python đầu tiên của bạn với TkinterYếu tố nền tảng của Tkinter GUI là cửa sổ. Windows là nơi chứa tất cả các thành phần GUI khác sống. Các phần tử GUI khác này, chẳng hạn như hộp văn bản, nhãn và nút, được gọi là tiện ích con. Widget được chứa bên trong cửa sổ Đầu tiên, tạo một cửa sổ chứa một widget duy nhất. Bắt đầu một phiên trình bao Python mới và làm theo Ghi chú. Các ví dụ mã trong hướng dẫn này đều đã được thử nghiệm trên Windows, macOS và Ubuntu Linux 20. 04 với Python phiên bản 3. 10 Nếu bạn đã cài đặt Python với bộ cài đặt chính thức có sẵn cho Windows và macOS từ python. org, thì bạn sẽ không gặp vấn đề gì khi chạy mã mẫu. Bạn có thể yên tâm bỏ qua phần còn lại của ghi chú này và tiếp tục với phần hướng dẫn Nếu bạn chưa cài đặt Python bằng trình cài đặt chính thức hoặc không có bản phân phối chính thức nào cho hệ thống của bạn, thì đây là một số mẹo để thiết lập và sử dụng Python trên macOS với Homebrew Bản phân phối Python cho macOS có sẵn trên Homebrew không đi kèm với phần phụ thuộc Tcl/Tk theo yêu cầu của Tkinter. Phiên bản hệ thống mặc định được sử dụng thay thế. Phiên bản này có thể đã lỗi thời và ngăn bạn nhập mô-đun Tkinter. Để tránh sự cố này, hãy sử dụng trình cài đặt macOS chính thức UbuntuLinux 20. 04 Để tiết kiệm dung lượng bộ nhớ, phiên bản mặc định của trình thông dịch Python được cài đặt sẵn trên Ubuntu Linux 20. 04 không hỗ trợ Tkinter. Tuy nhiên, nếu bạn muốn tiếp tục sử dụng trình thông dịch Python đi kèm với hệ điều hành của mình, thì hãy cài đặt gói sau
Thao tác này sẽ cài đặt mô-đun Python GUI Tkinter Hương vị Linux khác Nếu bạn không thể cài đặt Python hoạt động trên phiên bản Linux của mình, thì bạn có thể xây dựng Python với phiên bản Tcl/Tk chính xác từ mã nguồn. Để biết hướng dẫn từng bước về quy trình này, hãy xem Hướng dẫn thiết lập và cài đặt Python 3. Bạn cũng có thể thử sử dụng pyenv để quản lý nhiều phiên bản Python Khi trình bao Python của bạn mở, điều đầu tiên bạn cần làm là nhập mô-đun Python GUI Tkinter >>>
Một cửa sổ là một thể hiện của lớp 02 của Tkinter. Hãy tiếp tục và tạo một cửa sổ mới và gán nó cho biến 03>>>
Khi bạn thực thi đoạn mã trên, một cửa sổ mới hiện lên trên màn hình của bạn. Nó trông như thế nào phụ thuộc vào hệ điều hành của bạn Trong suốt phần còn lại của hướng dẫn này, bạn sẽ thấy ảnh chụp màn hình Windows Loại bỏ các quảng cáoThêm một tiện íchBây giờ bạn có một cửa sổ, bạn có thể thêm một tiện ích. Sử dụng lớp 04 để thêm một số văn bản vào cửa sổ. Tạo một tiện ích 05 với văn bản 06 và gán nó cho một biến có tên là 07>>>
Cửa sổ bạn đã tạo trước đó không thay đổi. Bạn vừa tạo một tiện ích 05, nhưng bạn chưa thêm nó vào cửa sổ. Có một số cách để thêm widget vào cửa sổ. Ngay bây giờ, bạn có thể sử dụng phương pháp ________ 105 vật dụng ________ 110>>> 3Cửa sổ bây giờ trông như thế này Khi bạn đóng gói một tiện ích vào một cửa sổ, Tkinter sẽ điều chỉnh kích thước cửa sổ nhỏ nhất có thể trong khi vẫn bao gồm đầy đủ tiện ích. Bây giờ thực hiện như sau >>> 4Dường như không có gì xảy ra, nhưng lưu ý rằng không có lời nhắc mới nào xuất hiện trong trình bao 11 yêu cầu Python chạy vòng lặp sự kiện Tkinter. Phương pháp này lắng nghe các sự kiện, chẳng hạn như bấm nút hoặc nhấn phím và chặn bất kỳ mã nào chạy sau mã đó cho đến khi bạn đóng cửa sổ nơi bạn đã gọi phương thức. Hãy tiếp tục và đóng cửa sổ bạn đã tạo và bạn sẽ thấy một lời nhắc mới được hiển thị trong trình baoCảnh báo. Khi bạn làm việc với Tkinter từ REPL của Python, các bản cập nhật cho cửa sổ được áp dụng khi mỗi dòng được thực thi. Đây không phải là trường hợp khi chương trình Tkinter được thực thi từ tệp Python Nếu bạn không bao gồm 11 ở cuối chương trình trong tệp Python, thì ứng dụng Tkinter sẽ không bao giờ chạy và sẽ không có gì hiển thị. Ngoài ra, bạn có thể xây dựng giao diện người dùng của mình dần dần trong Python REPL bằng cách gọi 13 sau mỗi bước để phản ánh thay đổiTạo một cửa sổ với Tkinter chỉ mất một vài dòng mã. Nhưng các cửa sổ trống không hữu ích lắm. Trong phần tiếp theo, bạn sẽ tìm hiểu về một số tiện ích có sẵn trong Tkinter và cách bạn có thể tùy chỉnh chúng để đáp ứng nhu cầu của ứng dụng của mình Kiểm tra việc hiểu của bạnMở rộng các khối mã bên dưới để kiểm tra sự hiểu biết của bạn Tập thể dục. Tạo cửa sổ TkinterHiển thị/Ẩn Viết một tập lệnh Python đầy đủ để tạo cửa sổ Tkinter với văn bản 14Cửa sổ sẽ trông như thế này Hãy thử bài tập này ngay bây giờ Bạn có thể mở rộng khối mã bên dưới để xem giải pháp Giải pháp. Tạo cửa sổ TkinterHiển thị/Ẩn Đây là một giải pháp khả thi 9Hãy nhớ rằng mã của bạn có thể trông khác Khi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo Làm việc với WidgetWidget là cốt lõi của Python GUI framework Tkinter. Chúng là những yếu tố mà qua đó người dùng tương tác với chương trình của bạn. Mỗi widget trong Tkinter được định nghĩa bởi một lớp. Dưới đây là một số vật dụng có sẵn Lớp tiện ích Mô tả 05Một tiện ích được sử dụng để hiển thị văn bản trên màn hình 16Một nút có thể chứa văn bản và có thể thực hiện một hành động khi được nhấp vào 17Một tiện ích nhập văn bản chỉ cho phép một dòng văn bản 18Một tiện ích nhập văn bản cho phép nhập văn bản nhiều dòng 19Một vùng hình chữ nhật được sử dụng để nhóm các tiện ích có liên quan hoặc cung cấp Bạn sẽ thấy cách làm việc với từng tiện ích này trong các phần sau, nhưng hãy nhớ rằng Tkinter có nhiều tiện ích hơn những tiện ích được liệt kê ở đây. Sự lựa chọn của tiện ích thậm chí còn phức tạp hơn khi bạn tính đến một bộ tiện ích theo chủ đề hoàn toàn mới. Tuy nhiên, trong phần còn lại của hướng dẫn này, bạn sẽ chỉ sử dụng các widget cổ điển của Tkinter Nếu bạn muốn tìm hiểu thêm về hai loại tiện ích này, thì bạn có thể mở rộng phần có thể thu gọn bên dưới Tiện ích cổ điển so với tiện ích theo chủ đềHiển thị/Ẩn Điều đáng chú ý là hiện tại có hai loại tiện ích mở rộng trong Tkinter
Các tiện ích cổ điển của Tkinter có khả năng tùy biến cao và đơn giản, nhưng chúng có xu hướng lỗi thời hoặc hơi xa lạ trên hầu hết các nền tảng hiện nay. Nếu bạn muốn tận dụng lợi thế của các tiện ích có giao diện gốc và cảm giác quen thuộc với người dùng của một hệ điều hành nhất định, thì bạn có thể muốn xem các tiện ích theo chủ đề Hầu hết các tiện ích theo chủ đề gần như là sự thay thế thả xuống cho các đối tác kế thừa của chúng, nhưng với giao diện hiện đại hơn. Bạn cũng có thể sử dụng một vài tiện ích hoàn toàn mới, chẳng hạn như thanh tiến trình, trước đây không có sẵn trong Tkinter. Đồng thời, bạn sẽ cần tiếp tục sử dụng một số tiện ích cổ điển không có tùy chọn thay thế theo chủ đề Ghi chú. Các widget theo chủ đề trong mô-đun 24 sử dụng giao diện gốc của hệ điều hành theo mặc định. Tuy nhiên, bạn có thể thay đổi chủ đề của chúng để có giao diện trực quan tùy chỉnh, chẳng hạn như chế độ sáng và tối. Chủ đề là tập hợp các định nghĩa kiểu có thể tái sử dụng, mà bạn có thể coi là Biểu định kiểu xếp tầng (CSS) cho TkinterLàm cho các tiện ích mới có thể sử dụng được có nghĩa là trích xuất hầu hết thông tin kiểu dáng của chúng thành các đối tượng riêng biệt. Một mặt, sự phân tách các mối quan tâm như vậy là một thuộc tính mong muốn trong thiết kế của thư viện, nhưng mặt khác, nó giới thiệu một lớp trừu tượng bổ sung, làm cho các tiện ích theo chủ đề khó tạo kiểu hơn so với các tiện ích cổ điển Khi làm việc với các widget thông thường và theo chủ đề trong Tkinter, theo thông lệ, bạn sẽ khai báo các bí danh sau cho các gói và mô-đun Tkinter >>> 0Các bí danh như thế này cho phép bạn đề cập rõ ràng đến 04 hoặc 26, chẳng hạn, trong một chương trình tùy thuộc vào nhu cầu của bạn>>> 3Tuy nhiên, đôi khi bạn có thể thấy thuận tiện hơn khi sử dụng nhập ký tự đại diện ( 27) để tự động ghi đè tất cả các tiện ích kế thừa bằng các tiện ích theo chủ đề nếu có thể, như vậy>>> 5Bây giờ, bạn không cần phải thêm tiền tố vào tên lớp của tiện ích với mô-đun Python tương ứng của nó. Bạn sẽ luôn tạo một tiện ích theo chủ đề miễn là tiện ích đó có sẵn hoặc bạn sẽ quay lại tiện ích cổ điển nếu không. Hai câu lệnh nhập ở trên phải được đặt theo thứ tự đã chỉ định để có hiệu lực. Do đó, nhập ký tự đại diện được coi là một thông lệ xấu, thường nên tránh trừ khi được sử dụng một cách có ý thức Để có danh sách đầy đủ các tiện ích Tkinter, hãy xem Tiện ích cơ bản và Tiện ích khác trong hướng dẫn TkDocs. Mặc dù nó mô tả các vật dụng theo chủ đề được giới thiệu trong Tcl/Tk 8. 5, hầu hết thông tin ở đó cũng nên áp dụng cho các vật dụng cổ điển Sự thật thú vị. Tkinter nghĩa đen là viết tắt của “giao diện Tk” vì nó là một ràng buộc Python hoặc giao diện lập trình cho thư viện Tk bằng ngôn ngữ kịch bản Tcl Hiện tại, hãy xem kỹ tiện ích 05Loại bỏ các quảng cáoHiển thị văn bản và hình ảnh với các widget >>> import tkinter as tk 05 05 vật dụng được sử dụng để hiển thị văn bản hoặc hình ảnh. Người dùng không thể chỉnh sửa văn bản được hiển thị bởi tiện ích 05. Nó chỉ dành cho mục đích hiển thị. Như bạn đã thấy trong ví dụ ở phần đầu của hướng dẫn này, bạn có thể tạo tiện ích con 05 bằng cách khởi tạo lớp 05 và chuyển một chuỗi tới tham số 34 0 05 tiện ích hiển thị văn bản với màu văn bản hệ thống mặc định và màu nền văn bản hệ thống mặc định. Chúng thường có màu đen và trắng tương ứng, nhưng bạn có thể thấy các màu khác nếu bạn đã thay đổi các cài đặt này trong hệ điều hành của mìnhBạn có thể kiểm soát văn bản và màu nền của 05 bằng cách sử dụng các tham số 37 và 38 1Có rất nhiều tên màu hợp lệ, bao gồm
Nhiều tên màu HTML hoạt động với Tkinter. Để tham khảo đầy đủ, bao gồm các màu hệ thống dành riêng cho macOS và Windows mà chủ đề hệ thống hiện tại kiểm soát, hãy xem trang hướng dẫn sử dụng màu Bạn cũng có thể chỉ định màu bằng các giá trị RGB thập lục phân 2Thao tác này đặt nền nhãn thành màu xanh lam nhạt đẹp mắt. Các giá trị RGB thập lục phân khó hiểu hơn các màu được đặt tên, nhưng chúng cũng linh hoạt hơn. May mắn thay, có những công cụ giúp việc lấy mã màu thập lục phân tương đối dễ dàng Nếu bạn không muốn gõ 37 và 38 mọi lúc, thì bạn có thể sử dụng các tham số tốc ký 47 và 48 để đặt màu nền trước và nền sau 3Bạn cũng có thể kiểm soát chiều rộng và chiều cao của nhãn bằng tham số 49 và 50 4Đây là những gì nhãn này trông giống như trong một cửa sổ Có vẻ lạ khi nhãn trong cửa sổ không phải là hình vuông mặc dù cả chiều rộng và chiều cao đều được đặt thành 51. Điều này là do chiều rộng và chiều cao được đo bằng đơn vị văn bản. Một đơn vị văn bản theo chiều ngang được xác định bởi chiều rộng của ký tự 52 hoặc số 0 trong phông chữ hệ thống mặc định. Tương tự, một đơn vị văn bản dọc được xác định bởi chiều cao của ký tự 52Ghi chú. Đối với các phép đo chiều rộng và chiều cao, Tkinter sử dụng các đơn vị văn bản, thay vì đơn vị như inch, cm hoặc pixel, để đảm bảo hoạt động nhất quán của ứng dụng trên các nền tảng Đơn vị đo lường theo chiều rộng của một ký tự có nghĩa là kích thước của tiện ích có liên quan đến phông chữ mặc định trên máy của người dùng. Điều này đảm bảo văn bản vừa vặn trong nhãn và nút, bất kể ứng dụng đang chạy ở đâu Nhãn rất phù hợp để hiển thị một số văn bản, nhưng chúng không giúp bạn nhận thông tin đầu vào từ người dùng. Ba tiện ích tiếp theo mà bạn sẽ tìm hiểu đều được sử dụng để nhận đầu vào của người dùng Loại bỏ các quảng cáoHiển thị các nút có thể nhấp với tiện ích con >>> import tkinter as tk 16 16 tiện ích được sử dụng để hiển thị các nút có thể nhấp. Bạn có thể định cấu hình chúng để gọi một chức năng bất cứ khi nào chúng được nhấp vào. Bạn sẽ đề cập đến cách gọi các chức năng từ các lần nhấp vào nút trong phần tiếp theo. Bây giờ, hãy xem cách tạo và tạo kiểu cho một nútCó nhiều điểm tương đồng giữa các vật dụng 16 và 05. Theo nhiều cách, một nút chỉ là một nhãn mà bạn có thể nhấp vào. Các đối số từ khóa tương tự mà bạn sử dụng để tạo và tạo kiểu cho một 05 sẽ hoạt động với các tiện ích con của 16. Ví dụ: đoạn mã sau tạo một nút có nền màu xanh và văn bản màu vàng. Nó cũng đặt chiều rộng và chiều cao lần lượt là các đơn vị văn bản 60 và 61 5Đây là giao diện của nút trong một cửa sổ khá tiện lợi. Bạn có thể sử dụng hai tiện ích tiếp theo để thu thập văn bản nhập từ người dùng Nhận đầu vào của người dùng với các widget >>> import tkinter as tk 17Khi bạn cần lấy một chút văn bản từ người dùng, chẳng hạn như tên hoặc địa chỉ email, hãy sử dụng tiện ích 17. Nó sẽ hiển thị một hộp văn bản nhỏ mà người dùng có thể nhập một số văn bản vào. Tạo và tạo kiểu cho tiện ích con 17 hoạt động khá giống với tiện ích con 05 và 16. Ví dụ: đoạn mã sau tạo một tiện ích có nền màu xanh lam, một số văn bản màu vàng và chiều rộng là 67 đơn vị văn bản 6Tuy nhiên, điều thú vị về các widget của 17 không phải là cách tạo kiểu cho chúng. Đó là cách sử dụng chúng để nhận thông tin đầu vào từ người dùng. Có ba thao tác chính mà bạn có thể thực hiện với các tiện ích 17
Cách tốt nhất để hiểu về các vật dụng của 17 là tạo một vật dụng và tương tác với nó. Mở trình bao Python và làm theo các ví dụ trong phần này. Đầu tiên, nhập 20 và tạo một cửa sổ mới>>> 7Bây giờ hãy tạo tiện ích con 05 và 17>>> 8 05 mô tả loại văn bản nào sẽ xuất hiện trong tiện ích 17. Nó không thực thi bất kỳ loại yêu cầu nào trên 17, nhưng nó cho người dùng biết chương trình của bạn muốn họ đặt gì ở đó. Bạn cần 10 widget vào cửa sổ để chúng hiển thị>>> 9Đây là những gì trông giống như Lưu ý rằng Tkinter tự động căn giữa nhãn phía trên tiện ích 17 trong cửa sổ. Đây là một tính năng của 10, bạn sẽ tìm hiểu thêm về tính năng này trong các phần sauNhấp vào bên trong tiện ích 17 bằng chuột và nhập 84Bây giờ bạn đã nhập một số văn bản vào tiện ích 17, nhưng văn bản đó chưa được gửi đến chương trình của bạn. Bạn có thể sử dụng 70 để truy xuất văn bản và gán nó cho một biến có tên là 87>>> 0Bạn cũng có thể xóa văn bản. Phương thức 71 này lấy một đối số số nguyên cho Python biết ký tự nào cần xóa. Ví dụ: khối mã bên dưới cho biết cách 89 xóa ký tự đầu tiên khỏi 17>>> 1Văn bản còn lại trong widget bây giờ là 91Lưu ý rằng, giống như đối tượng chuỗi Python, văn bản trong tiện ích con 17 được lập chỉ mục bắt đầu bằng 52Nếu bạn cần xóa một số ký tự khỏi 17, sau đó chuyển đối số số nguyên thứ hai cho 71 cho biết chỉ mục của ký tự nơi việc xóa sẽ dừng lại. Ví dụ: đoạn mã sau xóa bốn chữ cái đầu tiên trong 17>>> 2Văn bản còn lại bây giờ là 97 98 hoạt động giống như cắt chuỗi. Đối số đầu tiên xác định chỉ mục bắt đầu và quá trình xóa tiếp tục nhưng không bao gồm chỉ mục được chuyển làm đối số thứ hai. Sử dụng hằng số đặc biệt 99 cho đối số thứ hai của 71 để xóa tất cả văn bản trong 17>>> 3Bây giờ bạn sẽ thấy một hộp văn bản trống Ngược lại, bạn cũng có thể chèn văn bản vào tiện ích 17>>> 4Cửa sổ bây giờ trông như thế này Đối số đầu tiên cho biết vị trí chèn văn bản của 72. Nếu không có văn bản nào trong 17 thì văn bản mới sẽ luôn được chèn vào đầu tiện ích con, bất kể bạn chuyển giá trị nào làm đối số đầu tiên. Ví dụ: gọi 72 với 06 làm đối số đầu tiên thay vì 52, như bạn đã làm ở trên, sẽ tạo ra kết quả tương tựNếu 17 đã chứa một số văn bản, thì 72 sẽ chèn văn bản mới vào vị trí đã chỉ định và dịch chuyển tất cả văn bản hiện có sang bên phải>>> 5Văn bản tiện ích hiện có nội dung là 84Các tiện ích 17 rất phù hợp để thu thập một lượng nhỏ văn bản từ người dùng, nhưng vì chúng chỉ được hiển thị trên một dòng nên chúng không lý tưởng để thu thập một lượng lớn văn bản. Đó là nơi các vật dụng của 18 xuất hiệnLoại bỏ các quảng cáoNhận đầu vào của người dùng nhiều dòng với các widget >>> import tkinter as tk 18Tiện ích 18 được sử dụng để nhập văn bản, giống như tiện ích 17. Sự khác biệt là các tiện ích 18 có thể chứa nhiều dòng văn bản. Với tiện ích 18, người dùng có thể nhập toàn bộ đoạn văn hoặc thậm chí nhiều trang văn bản. Cũng giống như với các tiện ích 17, bạn có thể thực hiện ba thao tác chính với các tiện ích 18
Mặc dù tên phương thức giống như phương pháp 17, nhưng chúng hoạt động hơi khác một chút. Đã đến lúc bắt tay vào làm bằng cách tạo một tiện ích 18 và xem những gì nó có thể làmGhi chú. Bạn vẫn mở cửa sổ từ phần trước chứ? Nếu vậy, thì bạn có thể đóng nó bằng cách thực hiện như sau >>> 6Bạn cũng có thể đóng thủ công bằng cách nhấp vào nút Đóng Trong trình bao Python của bạn, hãy tạo một cửa sổ trống mới và đóng gói tiện ích 25 vào đó>>> 7Theo mặc định, hộp văn bản lớn hơn nhiều so với tiện ích con 17. Đây là cửa sổ được tạo ở trên trông như thế nàoNhấp vào bất kỳ đâu bên trong cửa sổ để kích hoạt hộp văn bản. Nhập từ 27. Sau đó nhấn Enter và nhập 28 trên dòng thứ hai. Cửa sổ bây giờ trông như thế này. Giống như với tiện ích con 17, bạn có thể truy xuất văn bản từ tiện ích con 18 bằng cách sử dụng 70. Tuy nhiên, gọi 70 mà không có đối số sẽ không trả lại toàn bộ văn bản trong hộp văn bản giống như đối với tiện ích con 17. Nó đưa ra một ngoại lệ>>> 8 34 yêu cầu ít nhất một đối số. Gọi 70 với một chỉ mục trả về một ký tự. Để truy xuất một số ký tự, bạn cần chuyển chỉ mục bắt đầu và chỉ mục kết thúc. Các chỉ số trong tiện ích con 18 hoạt động khác với trong tiện ích con 17. Vì các tiện ích 18 có thể có nhiều dòng văn bản nên một chỉ mục phải chứa hai mẩu thông tin
Số dòng bắt đầu bằng 39 và vị trí ký tự bắt đầu bằng 52. Để tạo chỉ mục, bạn tạo một chuỗi có dạng 41, thay thế 42 bằng số dòng và 43 bằng số ký tự. Ví dụ: 44 đại diện cho ký tự đầu tiên trên dòng đầu tiên và 45 đại diện cho ký tự thứ tư trên dòng thứ haiSử dụng chỉ mục 44 để lấy chữ cái đầu tiên từ hộp văn bản mà bạn đã tạo trước đó>>> 9Có năm chữ cái trong từ 27 và số ký tự của 48 là 49, vì số ký tự bắt đầu từ 52 và từ 27 bắt đầu ở vị trí đầu tiên trong hộp văn bản. Cũng giống như với Python string slice, để có được toàn bộ từ 27 từ hộp văn bản, chỉ số kết thúc phải nhiều hơn một chỉ số của ký tự cuối cùng được đọcVì vậy, để lấy từ 27 từ hộp văn bản, hãy sử dụng 44 cho chỉ mục đầu tiên và 55 cho chỉ mục thứ hai>>> 0Để có từ 28 trên dòng thứ hai của hộp văn bản, hãy thay đổi số dòng trong mỗi chỉ mục thành 57>>> 1Để lấy tất cả văn bản trong một hộp văn bản, hãy đặt chỉ mục bắt đầu bằng 44 và sử dụng hằng số đặc biệt 99 cho chỉ mục thứ hai>>> 2Lưu ý rằng văn bản được trả về bởi 70 bao gồm mọi ký tự dòng mới. Bạn cũng có thể thấy từ ví dụ này rằng mọi dòng trong tiện ích 18 đều có ký tự xuống dòng ở cuối, bao gồm dòng văn bản cuối cùng trong hộp văn bản 71 được sử dụng để xóa các ký tự khỏi hộp văn bản. Nó hoạt động giống như 71 cho các vật dụng của 17. Có hai cách để sử dụng 71
Sử dụng phiên bản một đối số, bạn chuyển tới 71 chỉ mục của một ký tự cần xóa. Ví dụ: sau đây xóa ký tự đầu tiên, 67, khỏi hộp văn bản>>> 3Dòng văn bản đầu tiên trong cửa sổ hiện là 68Với phiên bản hai đối số, bạn chuyển hai chỉ mục để xóa một dải ký tự bắt đầu từ chỉ mục đầu tiên và tối đa nhưng không bao gồm chỉ mục thứ hai Ví dụ: để xóa 68 còn lại trên dòng đầu tiên của hộp văn bản, hãy sử dụng các chỉ số 44 và 71>>> 4Lưu ý rằng văn bản đã biến mất từ dòng đầu tiên. Điều này để lại một dòng trống theo sau từ 28 trên dòng thứ haiMặc dù bạn không thể nhìn thấy nó, vẫn có một ký tự trên dòng đầu tiên. Đó là một ký tự xuống dòng. Bạn có thể xác minh điều này bằng cách sử dụng 70>>> 5Nếu bạn xóa ký tự đó, thì phần còn lại của nội dung trong hộp văn bản sẽ dịch chuyển lên một dòng >>> 3Bây giờ, 28 nằm trên dòng đầu tiên của hộp văn bảnCố gắng xóa phần còn lại của văn bản trong hộp văn bản. Đặt 44 làm chỉ mục bắt đầu và sử dụng 99 cho chỉ mục thứ hai>>> 7Hộp văn bản hiện trống Bạn có thể chèn văn bản vào hộp văn bản bằng cách sử dụng 72>>> 8Thao tác này sẽ chèn từ 27 vào đầu hộp văn bản, sử dụng cùng định dạng 79 được sử dụng bởi 70 để chỉ định vị trí chènHãy xem điều gì sẽ xảy ra nếu bạn cố chèn từ 28 vào dòng thứ hai>>> 9Thay vì chèn văn bản vào dòng thứ hai, văn bản được chèn vào cuối dòng đầu tiên Nếu bạn muốn chèn văn bản vào một dòng mới, thì bạn cần chèn ký tự xuống dòng theo cách thủ công vào chuỗi được chèn >>> 30Bây giờ 28 ở dòng thứ hai của hộp văn bản 72 sẽ làm một trong hai việc
Việc cố gắng theo dõi chỉ số của ký tự cuối cùng thường là không thực tế. Cách tốt nhất để chèn văn bản vào cuối tiện ích con 18 là chuyển 99 cho tham số đầu tiên của 72>>> 31Đừng quên bao gồm ký tự xuống dòng ( 87) ở đầu văn bản nếu bạn muốn đặt nó trên một dòng mới>>> 32Các tiện ích 05, 16, 17 và 18 chỉ là một số tiện ích có sẵn trong Tkinter. Có một số thứ khác, bao gồm các vật dụng cho hộp kiểm, nút radio, thanh cuộn và thanh tiến trình. Để biết thêm thông tin về tất cả các tiện ích có sẵn, hãy xem danh sách Tiện ích bổ sung trong phần Tài nguyên bổ sungLoại bỏ các quảng cáoGán Widget cho khung với >>> import tkinter as tk 19 WidgetTrong hướng dẫn này, bạn sẽ chỉ làm việc với năm vật dụng
Đây là bốn tiện ích bạn đã thấy cho đến nay cùng với tiện ích 19. 19 tiện ích rất quan trọng để tổ chức bố cục các tiện ích của bạn trong một ứng dụngTrước khi bạn tìm hiểu chi tiết về cách trình bày trực quan các tiện ích của mình, hãy xem kỹ cách hoạt động của các tiện ích 19 và cách bạn có thể chỉ định các tiện ích khác cho chúng. Đoạn script sau tạo một tiện ích 19 trống và gán nó cho cửa sổ ứng dụng chính 33 02 gói khung vào cửa sổ sao cho cửa sổ có kích thước nhỏ nhất có thể để bao quanh khung. Khi bạn chạy đoạn mã trên, bạn nhận được một số kết quả không thú vị lắmMột tiện ích 19 trống thực tế là vô hình. Khung tốt nhất nên được coi là vật chứa cho các vật dụng khác. Bạn có thể gán tiện ích cho khung bằng cách đặt thuộc tính 04 của tiện ích 34Để có cảm nhận về cách thức hoạt động của tính năng này, hãy viết một tập lệnh tạo hai tiện ích con 19 có tên là 06 và 07. Trong tập lệnh này, 06 chứa nhãn có văn bản 09 và 07 chứa nhãn 11. Đây là một cách để làm điều này 35Lưu ý rằng 06 được đóng gói vào cửa sổ trước 07. Cửa sổ mở ra hiển thị nhãn trong 06 phía trên nhãn trong 07Bây giờ hãy xem điều gì xảy ra khi bạn hoán đổi thứ tự của 16 và 17 36Đầu ra trông như thế này Bây giờ 18 đang ở trên cùng. Vì 18 được gán cho 07 nên nó sẽ di chuyển đến bất cứ vị trí nào của 07Tất cả bốn loại tiện ích mà bạn đã tìm hiểu— 05, 16, 17 và 18—đều có thuộc tính 04 được đặt khi bạn khởi tạo chúng. Bằng cách đó, bạn có thể kiểm soát 19 tiện ích nào được gán cho. Các widget của 19 rất phù hợp để sắp xếp các widget khác một cách hợp lý. Các tiện ích liên quan có thể được gán cho cùng một khung sao cho nếu khung được di chuyển trong cửa sổ thì các tiện ích liên quan sẽ ở cùng nhauGhi chú. Nếu bạn bỏ qua đối số 04 khi tạo phiên bản tiện ích con mới, thì theo mặc định, nó sẽ được đặt bên trong cửa sổ cấp cao nhấtNgoài việc nhóm các tiện ích của bạn một cách hợp lý, các tiện ích 19 có thể thêm một chút điểm nhấn vào phần trình bày trực quan cho ứng dụng của bạn. Đọc tiếp để biết cách tạo các đường viền khác nhau cho tiện ích con 19Loại bỏ các quảng cáoĐiều chỉnh giao diện khung hình với hình phù điêuCác tiện ích 19 có thể được định cấu hình bằng thuộc tính 33 tạo đường viền xung quanh khung. Bạn có thể đặt 33 thành bất kỳ giá trị nào sau đây
Để áp dụng hiệu ứng đường viền, bạn phải đặt thuộc tính 40 thành giá trị lớn hơn 39. Thuộc tính này điều chỉnh độ rộng của đường viền theo pixel. Cách tốt nhất để cảm nhận từng hiệu ứng trông như thế nào là tự mình xem chúng. Đây là tập lệnh gói năm tiện ích con 19 vào một cửa sổ, mỗi tiện ích có một giá trị khác nhau cho đối số 33 37Đây là một sự cố của kịch bản này
Cửa sổ được tạo bởi tập lệnh trên trông như thế này Trong hình ảnh này, bạn có thể thấy các hiệu ứng sau
Những hiệu ứng này mang lại cho ứng dụng Python GUI Tkinter của bạn một chút hấp dẫn trực quan Hiểu các quy ước đặt tên widgetKhi bạn tạo một tiện ích, bạn có thể đặt cho nó bất kỳ tên nào bạn thích, miễn là đó là mã định danh Python hợp lệ. Thông thường, bạn nên đưa tên của lớp tiện ích con vào tên biến mà bạn gán cho thể hiện tiện ích con. Ví dụ: nếu tiện ích con 05 được sử dụng để hiển thị tên người dùng, thì bạn có thể đặt tên cho tiện ích con là 65. Tiện ích 17 được sử dụng để thu thập tuổi của người dùng có thể được gọi là 67Ghi chú. Đôi khi, bạn có thể xác định một widget mới mà không gán nó cho một biến. Bạn sẽ gọi trực tiếp phương thức 10 của nó trên cùng một dòng mã>>> 38Điều này có thể hữu ích khi bạn không có ý định tham khảo phiên bản của tiện ích sau này. Do quản lý bộ nhớ tự động, Python thường sẽ thu gom rác các đối tượng chưa được gán như vậy, nhưng Tkinter ngăn chặn điều đó bằng cách đăng ký mọi tiện ích mới trong nội bộ Khi bạn bao gồm tên lớp widget trong tên biến, bạn sẽ giúp chính mình và bất kỳ ai khác cần đọc mã của bạn để hiểu loại widget mà tên biến đề cập đến. Tuy nhiên, việc sử dụng tên đầy đủ của lớp tiện ích có thể dẫn đến tên biến dài, vì vậy bạn có thể muốn sử dụng cách viết tắt để chỉ từng loại tiện ích. Đối với phần còn lại của hướng dẫn này, bạn sẽ sử dụng các tiền tố tốc ký sau để đặt tên cho các widget Widget ClassVariable Name PrefixVí dụ 05 70 71 16 73 74 17 76 77 18 79 80 19 82 83Trong phần này, bạn đã học cách tạo cửa sổ, sử dụng tiện ích con và làm việc với khung. Tại thời điểm này, bạn có thể tạo một số cửa sổ đơn giản hiển thị thông báo, nhưng bạn vẫn chưa tạo một ứng dụng toàn diện. Trong phần tiếp theo, bạn sẽ tìm hiểu cách kiểm soát bố cục ứng dụng của mình bằng trình quản lý hình học mạnh mẽ của Tkinter Kiểm tra việc hiểu của bạnMở rộng khối mã bên dưới cho một bài tập để kiểm tra sự hiểu biết của bạn Tập thể dục. Tạo tiện ích Mục nhập và chèn một số văn bảnHiển thị/Ẩn Viết một tập lệnh hoàn chỉnh hiển thị một tiện ích 17 rộng 40 đơn vị văn bản và có nền trắng và văn bản đen. Sử dụng 72 để hiển thị văn bản trong tiện ích có nội dung 86Cửa sổ đầu ra sẽ trông như thế này Hãy thử bài tập này ngay bây giờ Bạn có thể mở rộng khối mã bên dưới để xem giải pháp Giải pháp. Tạo tiện ích Mục nhập và chèn một số văn bảnHiển thị/Ẩn Có một số cách để giải bài tập này. Đây là một giải pháp sử dụng các tham số 48 và 47 để đặt màu nền và nền trước của tiện ích con 17 39Giải pháp này rất tuyệt vì nó đặt rõ ràng màu nền và màu nền trước cho tiện ích 17Trên hầu hết các hệ thống, màu nền mặc định cho tiện ích con 17 là màu trắng và màu nền trước mặc định là màu đen. Vì vậy, bạn có thể tạo cùng một cửa sổ với các tham số 48 và 47 bị bỏ qua 40Hãy nhớ rằng mã của bạn có thể trông khác Khi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo Loại bỏ các quảng cáoKiểm soát bố cục với Trình quản lý hình họcCho đến bây giờ, bạn đã thêm tiện ích con vào cửa sổ và tiện ích con 19 bằng cách sử dụng 10, nhưng bạn chưa biết chính xác phương pháp này làm gì. Hãy làm sáng tỏ mọi thứ. Bố cục ứng dụng trong Tkinter được kiểm soát bằng trình quản lý hình học. Mặc dù 10 là một ví dụ về trình quản lý hình học, nhưng đây không phải là ví dụ duy nhất. Tkinter có hai người khác
Mỗi cửa sổ hoặc 19 trong ứng dụng của bạn chỉ có thể sử dụng một trình quản lý hình học. Tuy nhiên, các khung khác nhau có thể sử dụng các trình quản lý hình học khác nhau, ngay cả khi chúng được gán cho một khung hoặc cửa sổ bằng trình quản lý hình học khác. Bắt đầu bằng cách xem xét kỹ hơn về 10Trình quản lý hình học >>> import tkinter as tk 10Trình quản lý hình học 10 sử dụng thuật toán đóng gói để đặt các tiện ích trong một 19 hoặc cửa sổ theo một thứ tự cụ thể. Đối với một widget nhất định, thuật toán đóng gói có hai bước chính
10 mạnh mẽ, nhưng có thể khó hình dung. Cách tốt nhất để cảm nhận về 10 là xem một số ví dụ. Xem điều gì sẽ xảy ra khi bạn 10 ba tiện ích 05 thành một 19 41Theo mặc định, 10 đặt mỗi 19 bên dưới cái trước đó, theo thứ tự chúng được gán cho cửa sổMỗi 19 được đặt ở vị trí có sẵn cao nhất. Do đó, 19 màu đỏ được đặt ở đầu cửa sổ. Sau đó, 19 màu vàng được đặt ngay bên dưới cái màu đỏ và 19 màu xanh ngay bên dưới cái màu vàngCó ba bưu kiện vô hình, mỗi bưu kiện chứa một trong ba vật dụng 19. Mỗi bưu kiện rộng bằng cửa sổ và cao bằng 19 mà nó chứa. Bởi vì không có điểm neo nào được chỉ định khi 10 được gọi cho mỗi 318, tất cả chúng đều được căn giữa bên trong các bưu kiện của chúng. Đó là lý do tại sao mỗi 19 được căn giữa trong cửa sổ 10 chấp nhận một số đối số từ khóa để định cấu hình vị trí tiện ích con chính xác hơn. Ví dụ: bạn có thể đặt đối số từ khóa 321 để chỉ định khung sẽ điền theo hướng nào. Các tùy chọn là 322 để điền theo hướng ngang, 323 để điền theo chiều dọc và 324 để điền theo cả hai hướng. Đây là cách bạn xếp chồng ba khung sao cho mỗi khung lấp đầy toàn bộ cửa sổ theo chiều ngang 42Lưu ý rằng 49 không được đặt trên bất kỳ tiện ích con nào của 19. 49 không còn cần thiết vì mỗi khung đặt 10 để lấp đầy theo chiều ngang, ghi đè bất kỳ chiều rộng nào bạn có thể đặtCửa sổ được tạo bởi tập lệnh này trông như thế này Một trong những điều thú vị khi lấp đầy cửa sổ bằng 10 là phần lấp đầy phản ứng nhanh với việc thay đổi kích thước cửa sổ. Hãy thử mở rộng cửa sổ do tập lệnh trước tạo ra để xem cách thức hoạt động của tập lệnh này. Khi bạn mở rộng cửa sổ, chiều rộng của ba tiện ích con 19 sẽ tăng lên để lấp đầy cửa sổTuy nhiên, hãy lưu ý rằng các tiện ích 19 không mở rộng theo hướng dọcĐối số từ khóa 55 của 10 chỉ định tiện ích sẽ được đặt ở phía nào của cửa sổ. Đây là những tùy chọn có sẵn
Nếu bạn không đặt 55, thì 10 sẽ tự động sử dụng 334 và đặt các tiện ích con mới ở đầu cửa sổ hoặc ở phần trên cùng của cửa sổ chưa có tiện ích con nào chiếm giữ. Ví dụ: tập lệnh sau đặt ba khung cạnh nhau từ trái sang phải và mở rộng từng khung để lấp đầy cửa sổ theo chiều dọc 43Lần này, bạn phải chỉ định đối số từ khóa 50 trên ít nhất một trong các khung để buộc cửa sổ có chiều cao nhất địnhCửa sổ kết quả trông như thế này Giống như khi bạn đặt 342 để làm cho khung phản hồi khi bạn thay đổi kích thước cửa sổ theo chiều ngang, bạn có thể đặt 343 để làm cho khung phản hồi khi bạn thay đổi kích thước cửa sổ theo chiều dọcĐể làm cho bố cục thực sự đáp ứng, bạn có thể đặt kích thước ban đầu cho khung của mình bằng cách sử dụng thuộc tính 49 và 50. Sau đó, đặt đối số từ khóa 321 của 10 thành 324 và đặt đối số từ khóa 349 thành 350 44Khi bạn chạy tập lệnh trên, bạn sẽ thấy một cửa sổ ban đầu trông giống như cửa sổ bạn đã tạo trong ví dụ trước. Sự khác biệt là bây giờ bạn có thể thay đổi kích thước cửa sổ theo cách bạn muốn và các khung sẽ mở rộng và lấp đầy cửa sổ một cách thích ứng Tuyệt đấy Loại bỏ các quảng cáoTrình quản lý hình học >>> greeting = tk.Label(text="Hello, Tkinter") 97Bạn có thể sử dụng 97 để kiểm soát vị trí chính xác mà tiện ích sẽ chiếm trong cửa sổ hoặc 19. Bạn phải cung cấp hai đối số từ khóa, 354 và 355, xác định tọa độ x và y cho góc trên cùng bên trái của tiện ích con. Cả 354 và 355 đều được đo bằng pixel, không phải đơn vị văn bảnHãy nhớ rằng gốc tọa độ, trong đó 354 và 355 đều là 52, là góc trên cùng bên trái của 19 hoặc cửa sổ. Vì vậy, bạn có thể coi đối số 355 của 97 là số pixel từ trên cùng của cửa sổ và đối số 354 là số pixel từ cạnh trái của cửa sổĐây là một ví dụ về cách hoạt động của trình quản lý hình học 97 45Đây là cách mã này hoạt động
Đây là cửa sổ mà mã tạo ra Lưu ý rằng nếu bạn chạy mã này trên một hệ điều hành khác sử dụng các kiểu và cỡ phông chữ khác nhau thì nhãn thứ hai có thể bị che khuất một phần bởi cạnh của cửa sổ. Đó là lý do tại sao 97 không được sử dụng thường xuyên. Thêm vào đó, nó có hai nhược điểm chính
Một trong những thách thức chính của việc phát triển GUI đa nền tảng là làm cho bố cục trông đẹp mắt bất kể chúng được xem trên nền tảng nào và 97 là một lựa chọn tồi để tạo bố cục đáp ứng và đa nền tảngĐiều đó không có nghĩa là bạn không bao giờ nên sử dụng 97. Trong một số trường hợp, nó có thể chỉ là những gì bạn cần. Ví dụ: nếu bạn đang tạo giao diện GUI cho bản đồ, thì 97 có thể là lựa chọn hoàn hảo để đảm bảo các tiện ích con được đặt ở khoảng cách chính xác với nhau trên bản đồ 10 thường là lựa chọn tốt hơn so với 97, nhưng ngay cả 10 cũng có một số nhược điểm. Vị trí của các widget phụ thuộc vào thứ tự mà 10 được gọi, vì vậy có thể khó sửa đổi các ứng dụng hiện có nếu không hiểu đầy đủ về mã kiểm soát bố cục. Trình quản lý hình học 98 giải quyết rất nhiều vấn đề này, như bạn sẽ thấy trong phần tiếp theoTrình quản lý hình học >>> greeting = tk.Label(text="Hello, Tkinter") 98Trình quản lý hình học mà bạn có thể sẽ sử dụng thường xuyên nhất là 98, cung cấp tất cả sức mạnh của 10 ở định dạng dễ hiểu và dễ bảo trì hơn 98 hoạt động bằng cách tách một cửa sổ hoặc 19 thành hàng và cột. Bạn chỉ định vị trí của một tiện ích con bằng cách gọi 98 và chuyển các chỉ số hàng và cột cho các đối số từ khóa 394 và 395 tương ứng. Cả chỉ số hàng và cột đều bắt đầu từ 52, do đó, chỉ số hàng là 39 và chỉ số cột là 57 yêu cầu 98 đặt một tiện ích vào cột thứ ba của hàng thứ haiTập lệnh sau tạo một lưới khung 3 × 3 với các tiện ích con 05 được đóng gói trong chúng 46Đây là cửa sổ kết quả trông như thế nào Bạn đang sử dụng hai trình quản lý hình học trong ví dụ này. Mỗi khung được gắn vào 03 với trình quản lý hình học 98 47Mỗi 403 được gắn vào 19 chủ của nó với 10 48Điều quan trọng cần nhận ra ở đây là mặc dù 98 được gọi trên mỗi đối tượng 19, trình quản lý hình học áp dụng cho đối tượng 03. Tương tự, bố cục của mỗi 56 được kiểm soát bằng trình quản lý hình học 10Các khung trong ví dụ trước được đặt chặt chẽ cạnh nhau. Để thêm một số khoảng trống xung quanh mỗi khung, bạn có thể đặt phần đệm của từng ô trong lưới. Phần đệm chỉ là một số khoảng trống bao quanh một tiện ích và làm nổi bật nội dung của nó một cách trực quan Hai loại đệm là đệm bên ngoài và đệm bên trong. Phần đệm bên ngoài thêm một số khoảng trống xung quanh bên ngoài ô lưới. Nó được kiểm soát với hai đối số từ khóa thành 98
Cả 412 và 413 đều được đo bằng pixel, không phải đơn vị văn bản, do đó, việc đặt cả hai giá trị này thành cùng một giá trị sẽ tạo ra cùng một lượng khoảng đệm theo cả hai hướng. Cố gắng thêm một số phần đệm xung quanh bên ngoài khung từ ví dụ trước 49Đây là cửa sổ kết quả 10 cũng có các tham số 412 và 413. Đoạn mã sau gần giống với đoạn mã trước, ngoại trừ việc bạn thêm năm pixel đệm bổ sung xung quanh mỗi nhãn theo cả hai hướng 354 và 355 90Phần đệm bổ sung xung quanh các tiện ích 05 cung cấp cho mỗi ô trong lưới một chút khoảng trống giữa đường viền 19 và văn bản trong nhãnĐiều đó trông khá đẹp. Nhưng nếu bạn thử mở rộng cửa sổ theo bất kỳ hướng nào, thì bạn sẽ nhận thấy rằng bố cục không phản hồi tốt lắm Toàn bộ lưới nằm ở góc trên cùng bên trái khi cửa sổ mở rộng Bằng cách sử dụng 423 và 424 trên đối tượng 03, bạn có thể điều chỉnh cách các hàng và cột của lưới phát triển khi cửa sổ được thay đổi kích thước. Hãy nhớ rằng, lưới được gắn vào 03, mặc dù bạn đang gọi 98 trên mỗi tiện ích 19. Cả 423 và 424 đều có ba đối số cơ bản
431 được đặt thành 52 theo mặc định, có nghĩa là cột hoặc hàng không mở rộng khi cửa sổ thay đổi kích thước. Nếu mỗi cột hoặc hàng được cho trọng số là 39, thì tất cả chúng đều tăng trưởng với tốc độ như nhau. Nếu một cột có trọng lượng là 39 và một cột khác có trọng lượng là 57, thì cột thứ hai sẽ mở rộng với tốc độ gấp đôi cột thứ nhất. Điều chỉnh tập lệnh trước đó để xử lý thay đổi kích thước cửa sổ tốt hơn 91 423 và 424 được đặt trong phần thân của vòng lặp 45 bên ngoài. Bạn có thể định cấu hình rõ ràng từng cột và hàng bên ngoài vòng lặp 45, nhưng điều đó sẽ yêu cầu viết thêm sáu dòng mãTrên mỗi lần lặp của vòng lặp, cột và hàng thứ 442 được định cấu hình để có trọng số là 39. Điều này đảm bảo rằng hàng và cột mở rộng với cùng tốc độ bất cứ khi nào cửa sổ được thay đổi kích thước. Đối số 432 được đặt thành 445 cho mỗi cột và 67 cho mỗi hàng. Điều này đảm bảo rằng tiện ích 05 luôn hiển thị văn bản của nó mà không cắt bỏ bất kỳ ký tự nào, ngay cả khi kích thước cửa sổ cực kỳ nhỏKết quả là một bố cục dạng lưới có thể mở rộng và co lại một cách mượt mà khi cửa sổ được thay đổi kích thước Hãy tự mình thử để cảm nhận nó hoạt động như thế nào. Chơi xung quanh với các tham số 431 và 432 để xem cách chúng ảnh hưởng đến lướiTheo mặc định, các vật dụng được căn giữa trong các ô lưới của chúng. Ví dụ: đoạn mã sau tạo hai tiện ích 05 và đặt chúng vào một lưới có một cột và hai hàng 92Mỗi ô lưới có chiều rộng ________ 1451 pixel và chiều cao ________ 406 pixel. Các nhãn được đặt ở giữa mỗi ô, như bạn có thể thấy trong hình dưới đây Bạn có thể thay đổi vị trí của từng nhãn bên trong ô lưới bằng cách sử dụng tham số 453, chấp nhận một chuỗi chứa một hoặc nhiều chữ cái sau
Các chữ cái 454, 458, 456 và 460 đến từ các hướng chính bắc, nam, đông và tây. Đặt 453 thành 454 trên cả hai nhãn ở vị trí mã trước đó, mỗi nhãn ở giữa trên cùng của ô lưới của nó 93Đây là đầu ra Bạn có thể kết hợp nhiều chữ cái trong một chuỗi để định vị từng nhãn ở góc ô lưới của nó 94Trong ví dụ này, tham số 453 của 372 được đặt thành 470, đặt nhãn ở góc trên cùng bên phải của ô lưới của nó. 375 được định vị ở góc dưới cùng bên trái bằng cách chuyển 472 đến 453. Đây là những gì trông giống như trong cửa sổKhi một tiện ích được định vị bằng 453, kích thước của chính tiện ích đó chỉ đủ lớn để chứa bất kỳ văn bản nào và các nội dung khác bên trong tiện ích đó. Nó sẽ không lấp đầy toàn bộ ô lưới. Để điền vào lưới, bạn có thể chỉ định 475 để buộc tiện ích điền vào ô theo hướng dọc hoặc 476 để điền vào ô theo hướng ngang. Để điền vào toàn bộ ô, hãy đặt 453 thành 478. Ví dụ sau minh họa từng tùy chọn này 95Đây là kết quả đầu ra trông như thế nào Điều mà ví dụ trên minh họa là tham số 453 của trình quản lý hình học 98 có thể được sử dụng để đạt được các hiệu ứng tương tự như tham số 321 của trình quản lý hình học 10. Sự tương ứng giữa các tham số 453 và 321 được tóm tắt trong bảng sau 98 10 487 343 489 342 491 492 98 là một trình quản lý hình học mạnh mẽ. Nó thường dễ hiểu hơn 10 và linh hoạt hơn nhiều so với 97. Khi tạo các ứng dụng Tkinter mới, bạn nên cân nhắc sử dụng 98 làm trình quản lý hình học chính của mìnhGhi chú. 98 mang lại sự linh hoạt hơn nhiều so với những gì bạn đã thấy ở đây. Ví dụ: bạn có thể định cấu hình ô để mở rộng nhiều hàng và cột. Để biết thêm thông tin, hãy xem phần Grid Geometry Manager của hướng dẫn TkDocsGiờ đây, bạn đã có kiến thức cơ bản về trình quản lý hình học cho Tkinter khung GUI Python, bước tiếp theo là gán hành động cho các nút để đưa ứng dụng của bạn vào cuộc sống Loại bỏ các quảng cáoKiểm tra việc hiểu của bạnMở rộng khối mã bên dưới cho một bài tập để kiểm tra sự hiểu biết của bạn Tập thể dục. Tạo biểu mẫu nhập địa chỉHiển thị/Ẩn Dưới đây là hình ảnh của một biểu mẫu nhập địa chỉ được thực hiện bằng Tkinter Viết script hoàn chỉnh tạo lại cửa sổ. Bạn có thể sử dụng bất kỳ trình quản lý hình học nào bạn thích Bạn có thể mở rộng khối mã bên dưới để xem giải pháp Giải pháp. Tạo biểu mẫu nhập địa chỉHiển thị/Ẩn Có nhiều cách khác nhau để giải bài tập này. Nếu giải pháp của bạn tạo ra một cửa sổ giống như cửa sổ trong câu lệnh bài tập, thì xin chúc mừng. Bạn đã giải thành công bài tập. Dưới đây, bạn có thể xem hai giải pháp sử dụng trình quản lý hình học 98Một giải pháp tạo tiện ích con 05 và 17 với cài đặt mong muốn cho từng trường 96Không có gì sai với giải pháp này. Hơi dài nhưng mọi thứ đều rất rõ ràng. Nếu bạn muốn thay đổi điều gì đó, thì rõ ràng là bạn sẽ biết chính xác nơi cần thực hiện Điều đó nói rằng, giải pháp có thể được rút ngắn đáng kể bằng cách nhận ra rằng mỗi 17 có cùng chiều rộng và tất cả những gì bạn cần cho mỗi 05 là văn bản 97Trong giải pháp này, một danh sách được sử dụng để lưu trữ các chuỗi cho từng nhãn ở dạng. Chúng được lưu trữ theo thứ tự mà mỗi trường biểu mẫu sẽ xuất hiện. Sau đó, 903 lấy cả chỉ mục và chuỗi từ mỗi giá trị trong danh sách 904Khi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo Làm cho ứng dụng của bạn tương tácĐến bây giờ, bạn đã biết khá rõ về cách tạo cửa sổ với Tkinter, thêm một số widget và kiểm soát bố cục ứng dụng. Điều đó thật tuyệt, nhưng các ứng dụng không chỉ trông đẹp mắt—chúng thực sự cần phải làm gì đó. Trong phần này, bạn sẽ tìm hiểu cách đưa các ứng dụng của mình vào cuộc sống bằng cách thực hiện các hành động bất cứ khi nào một số sự kiện xảy ra Sử dụng Sự kiện và Trình xử lý Sự kiệnKhi bạn tạo ứng dụng Tkinter, bạn phải gọi 11 để bắt đầu vòng lặp sự kiện. Trong vòng lặp sự kiện, ứng dụng của bạn sẽ kiểm tra xem có sự kiện nào xảy ra không. Nếu vậy, thì nó sẽ thực thi một số mã để đáp lạiVòng lặp sự kiện được cung cấp cho bạn với Tkinter, vì vậy bạn không phải viết bất kỳ mã nào để tự kiểm tra các sự kiện. Tuy nhiên, bạn phải viết mã sẽ được thực thi để phản hồi lại một sự kiện. Trong Tkinter, bạn viết các hàm được gọi là trình xử lý sự kiện cho các sự kiện mà bạn sử dụng trong ứng dụng của mình Ghi chú. Sự kiện là bất kỳ hành động nào xảy ra trong vòng lặp sự kiện có thể kích hoạt một số hành vi trong ứng dụng, chẳng hạn như khi nhấn phím hoặc nút chuột Khi một sự kiện xảy ra, một đối tượng sự kiện được phát ra, điều đó có nghĩa là một thể hiện của một lớp đại diện cho sự kiện đó được tạo ra. Bạn không cần phải lo lắng về việc tự khởi tạo các lớp này. Tkinter sẽ tự động tạo các thể hiện của các lớp sự kiện cho bạn Bạn sẽ viết vòng lặp sự kiện của riêng mình để hiểu rõ hơn về cách thức hoạt động của vòng lặp sự kiện của Tkinter. Bằng cách đó, bạn có thể thấy vòng lặp sự kiện của Tkinter phù hợp với ứng dụng của bạn như thế nào và phần nào bạn cần tự viết Giả sử có một danh sách tên là 906 chứa các đối tượng sự kiện. Một đối tượng sự kiện mới được tự động thêm vào 906 mỗi khi một sự kiện xảy ra trong chương trình của bạn. Bạn không cần thực hiện cơ chế cập nhật này. Nó chỉ tự động xảy ra với bạn trong ví dụ khái niệm này. Sử dụng vòng lặp vô hạn, bạn có thể liên tục kiểm tra xem có bất kỳ đối tượng sự kiện nào trong 906 không 98Ngay bây giờ, vòng lặp sự kiện mà bạn đã tạo không làm gì với 909. Hãy thay đổi điều đó. Giả sử ứng dụng của bạn cần phản hồi với các lần nhấn phím. Bạn cần kiểm tra xem 909 có được tạo bởi người dùng nhấn một phím trên bàn phím của họ hay không và nếu vậy, hãy chuyển 909 cho một chức năng xử lý sự kiện cho các lần nhấn phímGiả sử rằng 909 có thuộc tính 913 được đặt thành chuỗi 914 nếu sự kiện là một đối tượng sự kiện nhấn phím và thuộc tính 915 chứa ký tự của phím được nhấn. Tạo một hàm 916 mới và cập nhật mã vòng lặp sự kiện của bạn 99Khi bạn gọi cho 11, một cái gì đó giống như vòng lặp trên sẽ chạy cho bạn. Phương pháp này đảm nhận hai phần của vòng lặp cho bạn
Cập nhật vòng lặp sự kiện của bạn để sử dụng 11 thay vì vòng lặp sự kiện của riêng bạn 00 919 giúp bạn rất nhiều, nhưng đoạn mã trên còn thiếu thứ gì đó. Làm thế nào để Tkinter biết khi nào nên sử dụng ________ 1916? Loại bỏ các quảng cáoSử dụng >>> import tkinter as tk 921Để gọi một trình xử lý sự kiện bất cứ khi nào một sự kiện xảy ra trên một tiện ích, hãy sử dụng 921. Trình xử lý sự kiện được cho là bị ràng buộc với sự kiện vì nó được gọi mỗi khi sự kiện xảy ra. Bạn sẽ tiếp tục với ví dụ nhấn phím từ phần trước và sử dụng 921 để liên kết 916 với sự kiện nhấn phím 01Ở đây, trình xử lý sự kiện 916 bị ràng buộc với sự kiện 927 bằng cách sử dụng 928. Bất cứ khi nào một phím được nhấn trong khi ứng dụng đang chạy, chương trình của bạn sẽ in ký tự của phím được nhấnGhi chú. Đầu ra của chương trình trên không được in trong cửa sổ ứng dụng Tkinter. Nó được in ra luồng đầu ra tiêu chuẩn (thiết bị xuất chuẩn) Nếu bạn chạy chương trình ở chế độ IDLE, thì bạn sẽ thấy đầu ra trong cửa sổ tương tác. Nếu bạn chạy chương trình từ thiết bị đầu cuối, thì bạn sẽ thấy đầu ra trong thiết bị đầu cuối của mình 921 luôn có ít nhất hai đối số
Trình xử lý sự kiện được liên kết với tiện ích mà trên đó 921 được gọi. Khi trình xử lý sự kiện được gọi, đối tượng sự kiện được chuyển đến hàm xử lý sự kiệnTrong ví dụ trên, trình xử lý sự kiện được liên kết với chính cửa sổ, nhưng bạn có thể liên kết trình xử lý sự kiện với bất kỳ tiện ích con nào trong ứng dụng của mình. Ví dụ: bạn có thể liên kết trình xử lý sự kiện với tiện ích con 16 sẽ thực hiện một số hành động bất cứ khi nào nút được nhấn 02Trong ví dụ này, sự kiện 934 trên tiện ích con 935 được liên kết với trình xử lý sự kiện 936. Sự kiện 934 xảy ra bất cứ khi nào nhấn nút chuột trái trong khi chuột ở trên tiện ích. Có các sự kiện khác cho lần nhấp chuột, bao gồm 938 cho nút chuột giữa và 939 cho nút chuột phảiGhi chú. Để biết danh sách các sự kiện thường được sử dụng, hãy xem phần Loại sự kiện của Tkinter 8. 5 tài liệu tham khảo Bạn có thể liên kết bất kỳ trình xử lý sự kiện nào với bất kỳ loại tiện ích con nào bằng 921, nhưng có một cách đơn giản hơn để liên kết trình xử lý sự kiện với các lần nhấp vào nút bằng cách sử dụng thuộc tính 942 của tiện ích 16Sử dụng >>> import tkinter as tk 942Mỗi tiện ích 16 đều có thuộc tính 942 mà bạn có thể gán cho một chức năng. Bất cứ khi nào nhấn nút, chức năng sẽ được thực thiHãy xem một ví dụ. Trước tiên, bạn sẽ tạo một cửa sổ có tiện ích con 05 chứa giá trị số. Bạn sẽ đặt các nút ở bên trái và bên phải của nhãn. Nút bên trái sẽ được sử dụng để giảm giá trị trong 05 và nút bên phải sẽ tăng giá trị. Đây là mã cho cửa sổ 03Cửa sổ trông như thế này Với bố cục ứng dụng được xác định, bạn có thể làm cho nó trở nên sống động bằng cách đưa ra một số lệnh cho các nút. Bắt đầu với nút bên trái. Khi nhấn nút này, nó sẽ giảm giá trị trong nhãn xuống một. Để làm được điều này, trước tiên bạn cần có câu trả lời cho hai câu hỏi
Tiện ích 05 không có 70 như tiện ích 17 và 18 có. Tuy nhiên, bạn có thể truy xuất văn bản từ nhãn bằng cách truy cập thuộc tính 34 bằng ký hiệu chỉ số dưới kiểu từ điển 04Bây giờ bạn đã biết cách lấy và đặt văn bản của nhãn, hãy viết một hàm ________ 1955 để tăng giá trị trong ________ 1956 lên một 05 955 lấy văn bản từ 956 và chuyển đổi nó thành số nguyên với 959. Sau đó, nó tăng giá trị này lên một và đặt thuộc tính 34 của nhãn thành giá trị mới nàyBạn cũng sẽ cần 961 để giảm giá trị trong 962 xuống một 06Đặt 955 và 961 vào mã của bạn ngay sau câu lệnh 965Để kết nối các nút với chức năng, hãy gán chức năng cho thuộc tính 942 của nút. Bạn có thể làm điều này khi khởi tạo các nút. Ví dụ: cập nhật hai dòng khởi tạo các nút như sau 07Đó là tất cả những gì bạn cần làm để liên kết các nút với 955 và 961 và làm cho chương trình hoạt động. Hãy thử lưu các thay đổi của bạn và chạy ứng dụng. Nhấp vào các nút để tăng và giảm giá trị ở giữa cửa sổĐây là mã ứng dụng đầy đủ để bạn tham khảo Mã nguồn đầy đủ của ứng dụng truy cậpHiển thị/Ẩn 08Ứng dụng này không đặc biệt hữu ích, nhưng những kỹ năng bạn học được ở đây áp dụng cho mọi ứng dụng bạn sẽ tạo
Trong hai phần tiếp theo, bạn sẽ xây dựng các ứng dụng hữu ích hơn. Đầu tiên, bạn sẽ xây dựng bộ chuyển đổi nhiệt độ để chuyển đổi giá trị nhiệt độ từ độ F sang độ C. Sau đó, bạn sẽ xây dựng một trình soạn thảo văn bản có thể mở, chỉnh sửa và lưu tệp văn bản Kiểm tra việc hiểu của bạnMở rộng khối mã bên dưới cho một bài tập để kiểm tra sự hiểu biết của bạn Tập thể dục. Mô phỏng tung một con súc sắc sáu mặtHiện/Ẩn Viết chương trình mô phỏng tung một con súc sắc sáu mặt. Nên có một nút với văn bản 969. Khi người dùng nhấp vào nút, một số nguyên ngẫu nhiên từ 39 đến 971 sẽ được hiển thịDấu. Bạn có thể tạo một số ngẫu nhiên bằng cách sử dụng 972 trong mô-đun 973. Nếu bạn không quen thuộc với mô-đun 973, hãy xem Tạo dữ liệu ngẫu nhiên bằng Python (Hướng dẫn) để biết thêm thông tinCửa sổ ứng dụng sẽ giống như thế này Hãy thử bài tập này ngay bây giờ Bạn có thể mở rộng khối mã bên dưới để xem giải pháp Giải pháp. Mô phỏng tung một con súc sắc sáu mặtHiện/Ẩn Đây là một giải pháp khả thi 09Hãy nhớ rằng mã của bạn có thể trông khác Khi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo Xây dựng bộ chuyển đổi nhiệt độ (Ứng dụng ví dụ)Trong phần này, bạn sẽ xây dựng một ứng dụng chuyển đổi nhiệt độ cho phép người dùng nhập nhiệt độ theo độ F và nhấn một nút để chuyển nhiệt độ đó sang độ C. Bạn sẽ xem qua mã từng bước. Bạn cũng có thể tìm thấy mã nguồn đầy đủ ở cuối phần này để tham khảo Ghi chú. Để tận dụng tối đa phần này, hãy làm theo trình bao Python Trước khi bạn bắt đầu viết mã, trước tiên bạn sẽ thiết kế ứng dụng. Bạn cần ba yếu tố
Bạn có thể sắp xếp chúng trong một lưới với một hàng và một cột cho mỗi tiện ích. Điều đó mang lại cho bạn một ứng dụng hoạt động tối thiểu, nhưng nó không thân thiện với người dùng. Mọi thứ cần phải có nhãn Bạn sẽ đặt nhãn ngay bên phải tiện ích con 976 có chứa ký hiệu độ F (℉) để người dùng biết rằng giá trị 976 phải ở độ F. Để thực hiện việc này, hãy đặt văn bản nhãn thành 985, sử dụng hỗ trợ ký tự Unicode có tên của Python để hiển thị ký hiệu FahrenheitBạn có thể thêm một chút điểm nhấn cho 980 bằng cách đặt văn bản của nó thành giá trị 987, giá trị này sẽ hiển thị một mũi tên màu đen chỉ sang phải. Bạn cũng sẽ đảm bảo rằng 978 luôn có ký hiệu độ C (℃) sau văn bản nhãn 989 để cho biết rằng kết quả tính bằng độ C. Đây là cửa sổ cuối cùng sẽ trông như thế nàoBây giờ bạn đã biết mình cần những tiện ích nào và cửa sổ sẽ trông như thế nào, bạn có thể bắt đầu mã hóa nó. Đầu tiên, nhập 20 và tạo một cửa sổ mới 30 991 đặt tiêu đề của cửa sổ hiện có, trong khi 992 với cả hai đối số được đặt thành 993 làm cho cửa sổ có kích thước cố định. Cuối cùng, khi bạn chạy ứng dụng này, cửa sổ sẽ có dòng chữ Bộ chuyển đổi nhiệt độ trên thanh tiêu đề của nó. Tiếp theo, tạo tiện ích con 976 có nhãn tên là 995 và gán cả hai cho tiện ích con 19 có tên là 997 31Người dùng sẽ nhập giá trị Fahrenheit vào 976, và 995 được dùng để gắn nhãn cho 976 với ký hiệu Fahrenheit. Các nhóm container 997 976 và 995 cùng nhauBạn muốn đặt 995 ngay bên phải của 976. Bạn có thể bố trí chúng trong 997 bằng cách sử dụng trình quản lý hình học 98 với một hàng và hai cột 32Bạn đã đặt tham số 453 thành 456 cho 976 để nó luôn dính vào cạnh ngoài cùng bên phải của ô lưới. Bạn cũng đặt 453 thành 460 cho 995 để giữ cho nó dính vào cạnh ngoài cùng bên trái của ô lưới. Điều này đảm bảo rằng 995 luôn nằm ngay bên phải của 976Bây giờ, tạo 980 và 978 để chuyển đổi nhiệt độ đã nhập thành 976 và hiển thị kết quả 33Giống như 997, cả 980 và 978 đều được gán cho 03. Cùng với nhau, ba tiện ích này tạo thành ba ô trong lưới ứng dụng chính. Sử dụng 98 để tiếp tục và bố trí chúng ngay bây giờ 34Cuối cùng, chạy ứng dụng 35Rằng sẽ rất tốt. Nhưng nút chưa làm gì cả. Ở đầu tệp tập lệnh của bạn, ngay bên dưới dòng 965, hãy thêm một hàm có tên là 025 36Hàm này đọc giá trị từ 976, chuyển đổi nó từ độ F sang độ C, sau đó hiển thị kết quả ở dạng 978Bây giờ đi xuống dòng nơi bạn xác định 980 và đặt tham số 942 của nó thành 030 37Đó là nó. Bạn đã tạo một ứng dụng chuyển đổi nhiệt độ đầy đủ chức năng chỉ trong 26 dòng mã. Khá mát mẻ, phải không? Bạn có thể mở rộng khối mã bên dưới để xem toàn bộ tập lệnh Mã nguồn đầy đủ của bộ chuyển đổi nhiệt độHiển thị/Ẩn Đây là kịch bản đầy đủ để bạn tham khảo 38Đã đến lúc đẩy mọi thứ lên một tầm cao mới. Đọc tiếp để tìm hiểu cách xây dựng trình soạn thảo văn bản Xây dựng Trình soạn thảo văn bản (Ứng dụng mẫu)Trong phần này, bạn sẽ xây dựng một ứng dụng soạn thảo văn bản có thể tạo, mở, chỉnh sửa và lưu tệp văn bản. Có ba yếu tố cần thiết trong ứng dụng
Ba tiện ích sẽ được sắp xếp sao cho hai nút ở bên trái cửa sổ và hộp văn bản ở bên phải. Toàn bộ cửa sổ phải có chiều cao tối thiểu là 800 pixel và 036 phải có chiều rộng tối thiểu là 800 pixel. Toàn bộ bố cục phải đáp ứng để nếu cửa sổ được thay đổi kích thước, thì 036 cũng được thay đổi kích thước. Tuy nhiên, chiều rộng của khung chứa các nút không được thay đổiĐây là một bản phác thảo về giao diện của cửa sổ Bạn có thể đạt được bố cục mong muốn bằng trình quản lý hình học 98. Bố cục chứa một hàng và hai cột
Để đặt kích thước tối thiểu cho cửa sổ và 036, bạn có thể đặt tham số 432 của phương pháp cửa sổ 424 và 423 thành 044. Để xử lý thay đổi kích thước, bạn có thể đặt tham số 431 của các phương thức này thành 39Để đưa cả hai nút vào cùng một cột, bạn cần tạo tiện ích con 19 có tên là 048. Theo bản phác thảo, hai nút phải được xếp chồng lên nhau theo chiều dọc bên trong khung này, với 032 ở trên cùng. Bạn có thể làm điều đó với trình quản lý hình học 98 hoặc 10. Hiện tại, bạn sẽ gắn bó với 98 vì nó dễ làm việc hơn một chútBây giờ bạn đã có kế hoạch, bạn có thể bắt đầu mã hóa ứng dụng. Bước đầu tiên là tạo tất cả các vật dụng bạn cần 39Đây là một sự cố của mã này
Hãy nhìn vào dòng 6 kỹ hơn. Tham số 432 của 424 được đặt thành 044 và 431 được đặt thành 39 50Đối số đầu tiên là 52, đặt chiều cao của hàng đầu tiên thành 044 pixel và đảm bảo rằng chiều cao của hàng tăng tỷ lệ thuận với chiều cao của cửa sổ. Chỉ có một hàng trong bố cục ứng dụng, vì vậy các cài đặt này áp dụng cho toàn bộ cửa sổHãy cũng xem xét kỹ hơn dòng 7. Ở đây, bạn sử dụng 423 để đặt thuộc tính 49 và 431 của cột có chỉ số lần lượt là 39 thành 044 và 39 51Hãy nhớ rằng, chỉ số hàng và cột dựa trên số không, vì vậy các cài đặt này chỉ áp dụng cho cột thứ hai. Bằng cách chỉ định cấu hình cột thứ hai, hộp văn bản sẽ mở rộng và co lại một cách tự nhiên khi cửa sổ được thay đổi kích thước, trong khi cột chứa các nút sẽ giữ nguyên chiều rộng cố định Bây giờ bạn có thể làm việc trên bố cục ứng dụng. Đầu tiên, gán hai nút cho khung 048 bằng trình quản lý hình học 98 52Hai dòng mã này tạo một lưới có hai hàng và một cột trong khung 048 vì cả 032 và 034 đều có thuộc tính 04 được đặt thành 048. 032 được đặt ở hàng đầu tiên và 034 ở hàng thứ hai để 032 xuất hiện phía trên 034 trong bố cục, bạn chỉ định trong bản phác thảo của mìnhCả 032 và 034 đều có thuộc tính 453 được đặt thành 476, điều này buộc các nút mở rộng theo chiều ngang theo cả hai hướng và lấp đầy toàn bộ khung. Điều này đảm bảo rằng cả hai nút đều có cùng kích thướcBạn đặt năm pixel đệm xung quanh mỗi nút bằng cách đặt tham số 412 và 413 thành 61. Chỉ 032 có đệm dọc. Vì nó ở trên cùng, nên phần đệm dọc sẽ dịch chuyển nút xuống từ trên cùng của cửa sổ một chút và đảm bảo rằng có một khoảng cách nhỏ giữa nó và 034Bây giờ, 048 đã được bố trí và sẵn sàng hoạt động, bạn có thể thiết lập bố cục lưới cho phần còn lại của cửa sổ 53Hai dòng mã này tạo lưới có một hàng và hai cột cho 03. Bạn đặt 048 vào cột đầu tiên và 036 vào cột thứ hai để 048 xuất hiện ở bên trái của 036 trong bố cục cửa sổTham số 453 cho 048 được đặt thành 475, buộc toàn bộ khung mở rộng theo chiều dọc và lấp đầy toàn bộ chiều cao của cột của nó. 036 lấp đầy toàn bộ ô lưới của nó vì bạn đặt tham số 453 của nó thành 478, điều này buộc nó phải mở rộng theo mọi hướngBây giờ bố cục ứng dụng đã hoàn tất, hãy thêm 11 vào cuối chương trình, lưu và chạy tệp 54Cửa sổ sau được hiển thị Rằng sẽ rất tốt. Nhưng nó chưa làm gì cả, vì vậy bạn cần bắt đầu viết lệnh cho các nút. 032 cần hiển thị hộp thoại mở tệp và cho phép người dùng chọn tệp. Sau đó, nó cần mở tệp đó và đặt văn bản của 036 thành nội dung của tệp. Đây là một hàm 303 thực hiện điều này 55Đây là một sự cố của chức năng này
Bây giờ bạn có thể cập nhật chương trình để 032 gọi 303 bất cứ khi nào nó được nhấp vào. Có một số điều bạn cần làm để cập nhật chương trình. Đầu tiên, nhập 304 từ 305 bằng cách thêm phần nhập sau vào đầu chương trình của bạn 56Tiếp theo, đặt thuộc tính 942 của 323 thành 324 57Lưu tệp và chạy nó để kiểm tra xem mọi thứ có hoạt động không. Sau đó thử mở một tệp văn bản Khi 032 đang hoạt động, đã đến lúc thực hiện chức năng cho 034. Thao tác này cần mở hộp thoại lưu tệp để người dùng có thể chọn nơi họ muốn lưu tệp. Bạn sẽ sử dụng hộp thoại 327 trong mô-đun 305 cho việc này. Chức năng này cũng cần trích xuất văn bản hiện có trong 036 và ghi văn bản này vào một tệp tại vị trí đã chọn. Đây là một chức năng chỉ làm điều này 58Đây là cách mã này hoạt động
Bây giờ bạn có thể cập nhật chương trình để 034 gọi 339 khi nó được nhấp vào. Một lần nữa, có một vài điều bạn cần làm để cập nhật chương trình. Đầu tiên, nhập 327 từ 305 bằng cách cập nhật phần nhập ở đầu tập lệnh của bạn, như vậy 59Cuối cùng, đặt thuộc tính 942 của 034 thành 344 00Lưu tệp và chạy nó. Bây giờ bạn đã có một trình soạn thảo văn bản tối thiểu nhưng đầy đủ chức năng Bạn có thể mở rộng khối mã bên dưới để xem toàn bộ tập lệnh Mã nguồn đầy đủ của ứng dụng soạn thảo văn bảnHiển thị/Ẩn Đây là kịch bản đầy đủ để bạn tham khảo 01Bây giờ bạn đã xây dựng hai ứng dụng GUI bằng Python và áp dụng nhiều kỹ năng mà bạn đã học được trong hướng dẫn này. Đó không phải là thành tựu nhỏ, vì vậy hãy dành thời gian để cảm thấy hài lòng về những gì bạn đã làm. Bây giờ bạn đã sẵn sàng để tự xử lý một số ứng dụng Sự kết luậnTrong hướng dẫn này, bạn đã học cách bắt đầu với lập trình Python GUI. Tkinter là một lựa chọn hấp dẫn cho khung GUI Python vì nó được tích hợp trong thư viện chuẩn Python và việc tạo các ứng dụng với khung này tương đối dễ dàng Xuyên suốt hướng dẫn này, bạn đã học được một số khái niệm quan trọng về Tkinter
Bây giờ bạn đã thành thạo nền tảng lập trình Python GUI với Tkinter, bước tiếp theo là xây dựng một số ứng dụng của riêng bạn. Bạn sẽ tạo ra cái gì? Tài nguyên bổ sungTrong hướng dẫn này, bạn chỉ chạm vào nền tảng của việc tạo các ứng dụng GUI Python bằng Tkinter. Có một số chủ đề bổ sung không được đề cập ở đây. Trong phần này, bạn sẽ tìm thấy một số tài nguyên tốt nhất hiện có để giúp bạn tiếp tục cuộc hành trình của mình Tài liệu tham khảo Tkinter Dưới đây là một số tài nguyên chính thức để kiểm tra
Tiện ích bổ sung Trong hướng dẫn này, bạn đã tìm hiểu về các tiện ích 05, 16, 17, 18 và 19. Có một số tiện ích khác trong Tkinter, tất cả đều cần thiết để xây dựng các ứng dụng trong thế giới thực. Dưới đây là một số tài nguyên để tiếp tục tìm hiểu về widget
Phân phối ứng dụng Khi bạn đã tạo một ứng dụng với Tkinter, bạn có thể muốn phân phối ứng dụng đó cho đồng nghiệp và bạn bè của mình. Dưới đây là một số hướng dẫn để giúp bạn thực hiện quy trình đó
Các khung GUI khác Tkinter không phải là lựa chọn duy nhất của bạn cho khung GUI Python. Nếu Tkinter không đáp ứng nhu cầu của dự án của bạn, thì đây là một số khuôn khổ khác để xem xét
Lấy bài kiểm tra. Kiểm tra kiến thức của bạn với bài kiểm tra tương tác “Lập trình GUI Python với Tkinter” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian Lấy bài kiểm tra " Đánh dấu là đã hoàn thành 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về David Amos David là một nhà văn, lập trình viên và nhà toán học đam mê khám phá toán học thông qua mã » Thông tin thêm về DavidMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Bartosz Geir Arne Jaya Joanna kate Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bậc thầy Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Bạn có thể sử dụng Tkinter trong một trang web không?Chúng tôi có thể mở một trang web trong Tkinter bằng chế độ xem web . Thư viện này cho phép chúng tôi xem nội dung HTML trong cửa sổ GUI của nó.
Bạn có thể tạo GUI Python bằng HTML không?Như bạn có thể thấy, bạn có thể tạo toàn bộ GUI của mình bằng HTML , chúng ta chỉ cần thêm , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình. , tập lệnh này sẽ cho phép chúng tôi gọi các hàm python đã hiển thị của mình. Chúng tôi đã hoàn thành giao diện người dùng đồ họa của mình, bây giờ, chúng tôi phải tạo tệp python của mình.
Chúng tôi có thể sử dụng HTML và CSS trong Tkinter không?TkinterWeb cung cấp các liên kết cho tiện ích Tkhtml3 từ http. //tkhtml. tcl. tk/tkhtml. html, cho phép tải mã HTML và CSS vào ứng dụng Tkinter . Tất cả các hệ điều hành chính chạy Python 2. 7+ hoặc Python 3+ được hỗ trợ.
Tkinter có phải là GUI duy nhất cho Python không?Python có rất nhiều khung GUI, nhưng Tkinter là khung duy nhất được tích hợp trong thư viện chuẩn Python . |