Hướng dẫn how do i make a gui quiz in python? - làm thế nào để tạo một câu đố gui trong python?
Trong bài viết này, chúng tôi sẽ học cách xây dựng ứng dụng Quiz giao diện người dùng đồ họa (GUI) bằng mô-đun tích hợp Tkinter Python.Quiz Application using the Tkinter Python built-in module. Nhiệm vụ là hỏi các câu hỏi trắc nghiệm, thu thập câu trả lời của người dùng và cuối cùng hiển thị kết quả. Trước khi mã hóa GUI, trước tiên chúng ta sẽ xem cách tìm nạp các câu hỏi trắc nghiệm, câu trả lời đúng của chúng và các lựa chọn từ API DB Trivia mở. Cơ sở dữ liệu Trivia mở cung cấp API JSON hoàn toàn miễn phí mà bạn có thể sử dụng trong các dự án lập trình của mình. Việc sử dụng API này không yêu cầu khóa API. Để làm cho nhiệm vụ thú vị hơn, chúng tôi cũng sẽ chọn ngẫu nhiên thứ tự các lựa chọn.Open Trivia Database provides a completely free JSON API that you can use in your programming projects. Use of this API does not require an API Key. To make the task more interesting, we'll also randomize the order of choices. Xem video này để xem những gì chúng tôi đang xây dựng: Chúng tôi sẽ sử dụng các mô -đun và khái niệm sau trong dự án này: Quy trình công việc cơ bản của ứng dụng sẽ diễn ra như thế này: Được rồi, hãy bắt đầu! Như chúng tôi đã thảo luận ở trên, chúng tôi sẽ sử dụng API DB Trivia Open để nhận câu hỏi. Truy cập API của họ, chọn số lượng câu hỏi bạn muốn, cùng với các danh mục và khó khăn. Loại câu hỏi phải là nhiều lựa chọn và mã hóa phải được mã hóa mặc định. Nhấp vào Tạo URL API và bạn sẽ nhận được URL API. Đây là URL API mẫu: Để tìm nạp các câu hỏi, chúng tôi sẽ sử dụng mô -đun 0. Bạn có thể cài đặt nó như thế này:
Chúng ta hãy tạo một tệp Python 1 để tìm nạp các câu hỏi và câu trả lời của bài kiểm tra bằng URL API được tạo ở trên.
Trong tập lệnh trên, thay vì trực tiếp thêm các tham số 2 và 3 trong URL, chúng tôi đã tạo từ điển 4 và thêm các giá trị tương ứng.Sau đó, chúng tôi đang thực hiện yêu cầu GET bằng thư viện yêu cầu trên URL API DB Trivia đang mở. Một phản hồi JSON mẫu trông như thế này:GET request using the requests library on the Open Trivia DB API URL. A sample JSON response looks like this:
Dữ liệu JSON chứa một từ điển có hai khóa: 5 và 6. 5 cho các nhà phát triển nói với API đang làm gì. 6 là một danh sách mà chúng tôi quan tâm. Vì vậy, chúng tôi đã lưu trữ giá trị của kết quả trong một biến gọi là 9.Cách tạo mô hình câu hỏiMô hình câu hỏi không là gì ngoài một lớp Python với ba thuộc tính - 0, 1 và 2.Câu hỏi_Text là câu hỏi, đúng_answer là câu trả lời chính xác cho câu hỏi đó và các lựa chọn là danh sách các tùy chọn cho câu hỏi đó. Hãy tạo tệp 3 và tạo lớp trong đó:
Làm thế nào để tạo ra bộ não đốCâu đố, như tên cho thấy, là bộ não của ứng dụng. Hãy tạo tệp 4 và thêm mã sau đó:
Lớp 5 mất 6, một danh sách các câu hỏi. Ngoài ra, các thuộc tính 7 và 8 được khởi tạo với 9 và 0 được đặt thành 1 ban đầu.Phương pháp đầu tiên 2 kiểm tra xem bài kiểm tra có nhiều câu hỏi hơn hay không.Phương thức tiếp theo 3 nhận được câu hỏi từ danh sách 6 tại Index 7 và sau đó tăng thuộc tính 7 và trả về một câu hỏi được định dạng.Phương thức 7 lấy 8 làm đối số và kiểm tra xem câu trả lời của người dùng có đúng hay không. Nó cũng duy trì điểm số và trả về các giá trị Boolean.Phương pháp cuối cùng 9 trả về số lượng câu trả lời đúng, câu trả lời sai và tỷ lệ phần trăm điểm.
Cách xây dựng UI bài kiểm traHãy chuyển sang phần tiếp theo nơi chúng tôi sẽ tạo giao diện người dùng của ứng dụng. Tạo một tệp 0 cho phần này và thêm mã sau.
Trong mã trên, chúng tôi đã tạo một lớp Quizinterface với hàm tạo. Trong Python, phương thức 1 được gọi là hàm tạo và được gọi tự động bất cứ khi nào một đối tượng của lớp đó được tạo.Như đã thảo luận trong quy trình làm việc, lớp Quizinterface có một đối số về loại đố loại. Vì vậy, trong hàm tạo, chúng tôi đã vượt qua điều đó là 2.Điều đầu tiên chúng tôi làm trong Tkinter là tạo một cửa sổ bằng lớp TK. Bạn có thể đặt tiêu đề và hình học bằng các phương thức 3 và 4 tương ứng.Tiếp theo chúng tôi gọi một vài phương pháp mà chúng tôi sẽ tạo tiếp theo. Ngoài ra, chúng tôi đã tạo ra một bức tranh bằng cách sử dụng lớp Canvas nơi các câu hỏi của chúng tôi sẽ được đặt. Canvas là một khu vực hình chữ nhật nơi chúng ta có thể đặt văn bản, đồ họa, vật dụng, v.v. Bên trong khung vẽ, chúng tôi đã thêm một văn bản mẫu cho bây giờ bằng phương pháp 5. Sau đó, chúng tôi đã khai báo một biến StringVar được gọi là 8 để lưu trữ câu trả lời của người dùng theo loại chuỗi.Tiếp theo, chúng tôi đã tạo nhãn 7 để hiển thị câu trả lời là đúng hay sai khi sử dụng tiện ích nhãn. Tiện ích này thực hiện một hộp hiển thị nơi chúng ta có thể đặt văn bản hoặc hình ảnh. Bạn có thể cập nhật văn bản được hiển thị bởi tiện ích này bất cứ lúc nào bạn muốn.Cuối cùng, chúng tôi nhập vòng lặp sự kiện chính để thực hiện hành động chống lại từng sự kiện được kích hoạt bởi người dùng bằng phương pháp 8. Bây giờ, hãy tạo các phương pháp khác mà chúng ta sẽ sử dụng trong hàm tạo này.Để hiển thị tiêu đề
Để hiển thị một tiêu đề, chúng tôi đã tạo một tiện ích nhãn trên cửa sổ chính. Chúng tôi đặt các thuộc tính 9, 0, 1 và 2 và nó trông giống như thế này:Để hiển thị một câu hỏiNhư chúng ta đã biết, chúng ta đã tạo ra một bức tranh cho văn bản câu hỏi. Vì 7 được khởi tạo với 0 trong lớp QuizBrain, chúng tôi có thể nhận các câu hỏi bằng phương pháp 3:
Sử dụng phương thức 5 trong lớp Canvas, chúng ta có thể thêm văn bản câu hỏi một cách linh hoạt.Để tạo các nút radioVì các tùy chọn sẽ là bốn nút radio, chúng tôi sẽ sử dụng lớp Radiobutton từ mô -đun Tkinter. ________số 8Đầu tiên chúng tôi đã tạo một danh sách 6. Chúng tôi đặt vị trí y của lựa chọn đầu tiên là 220. Sử dụng vòng lặp thời gian, chúng tôi đã tạo bốn trường hợp của lớp Radiobutton trên cửa sổ chính. Lưu ý thuộc tính biến được đặt là 8 mà chúng tôi đã tạo trước đó.Chúng tôi sẽ nối các nút radio này trong 6 và đặt chúng ở khoảng cách 40 đơn vị trong trục y. Sau đó chúng tôi trả lại 6.Để hiển thị các tùy chọnChúng tôi sẽ sử dụng phương thức này để đặt thuộc tính 0 và 1 của mỗi nút radio.
Đầu tiên chúng tôi đặt 8 thành không. Sau đó, chúng tôi lặp lại 2 cho 0 và đặt hai thuộc tính từng thuộc tính cho mỗi tùy chọn.Để hiển thị các nútNhư bạn có thể thấy, chúng tôi có hai nút - tiếp theo và thoát. Chúng tôi sẽ sử dụng nút tiếp theo để chuyển sang câu hỏi tiếp theo (nếu có). Và chúng tôi sẽ sử dụng nút bỏ để thoát khỏi bài kiểm tra và phá hủy cửa sổ ngay lập tức. Chúng tôi sử dụng lớp nút từ mô -đun Tkinter để tạo chúng. Chức năng cho các nút này được thêm vào thuộc tính 5.Đối với nút tiếp theo, chúng tôi sẽ tạo một phương thức riêng ngay sau phần này. Đối với nút bỏ, chúng tôi chỉ phá hủy cửa sổ chính. Chức năng nút tiếp theo 0Nút tiếp theo phải làm rất nhiều thứ. Trước hết, nó kiểm tra xem câu trả lời được chọn bởi người dùng có đúng hay không sử dụng phương thức 6 hay không. Nó cho thấy các phản hồi cho phù hợp.Tiếp theo, nó kiểm tra xem bài kiểm tra có nhiều câu hỏi hơn hay không. Nếu có nhiều câu hỏi hơn, nó sẽ gọi lại các phương thức 7 và 8. Nếu không còn câu hỏi, nó gọi phương thức 9 để hiển thị kết quả và sau đó phá hủy cửa sổ chính.Để hiển thị kết quảKhi kết thúc bài kiểm tra, chúng ta cần hiển thị kết quả cho người dùng như thế này: Ở đây, như bạn có thể thấy, chúng tôi đang hiển thị tỷ lệ phần trăm điểm dựa trên câu trả lời đúng và câu trả lời sai. 1Chúng tôi sử dụng phương thức 0 để lấy các tính toán và sau đó chúng tôi sử dụng phương thức 1 từ lớp 2 để hiển thị thông báo bật lên như vậy.Mã đầy đủ cho class QuizInterface: def __init__(self, quiz_brain: QuizBrain) -> None: self.quiz = quiz_brain self.window = Tk() self.window.title("iQuiz App") self.window.geometry("850x530") # Display Title self.display_title() # Creating a canvas for question text, and dsiplay question self.canvas = Canvas(width=800, height=250) self.question_text = self.canvas.create_text(400, 125, text="Question here", width=680, fill=THEME_COLOR, font=( 'Ariel', 15, 'italic') ) self.canvas.grid(row=2, column=0, columnspan=2, pady=50) self.display_question() # Declare a StringVar to store user's answer self.user_answer = StringVar() # Display four options(radio buttons) self.opts = self.radio_buttons() self.display_options() # To show whether the answer is correct or wrong self.feedback = Label(self.window, pady=10, font=("ariel", 15, "bold")) self.feedback.place(x=300, y=380) # Next and Quit Button self.buttons() # Mainloop self.window.mainloop()0 2Cách đặt mọi thứ lại với nhauVì tất cả các thành phần đã sẵn sàng để được tích hợp cùng nhau, hãy tạo tệp 4 và thêm nội dung sau đây: 3Trước tiên chúng tôi đã nhập tất cả các lớp từ các tệp khác nhau mà chúng tôi đã tạo ở trên. Ngoài ra, chúng tôi cũng cần phương pháp 5 từ mô -đun 6 và mô -đun 7.Chúng tôi có một danh sách gọi là 5. Chúng tôi đang lặp lại trên 9 mà chúng tôi nhận được từ tệp 1. Nếu bạn thấy phản hồi mẫu, bạn sẽ tìm thấy một số văn bản như 1. Chúng cần được không được xử lý bằng phương pháp 2.Chúng tôi có một danh sách 2 sẽ chứa câu trả lời đúng cũng như các câu trả lời không chính xác. Danh sách sẽ được xáo trộn bằng phương pháp 5 từ mô -đun 6.Sau khi xáo trộn, chúng tôi tạo một câu hỏi bằng mô hình 6 từ tệp 7 và nối nó danh sách 5.Tiếp theo, chúng tôi đang tạo một đối tượng gọi là 7 của lớp QuizBrain yêu cầu một danh sách các câu hỏi. Vì vậy, chúng tôi sẽ chuyển 5 cho nó.Sau đó, chúng tôi đang tạo một đối tượng 01 của lớp Quizinterface yêu cầu một đối tượng của lớp QuizBrain, vì vậy chúng tôi đã chuyển đối tượng 7 mới được tạo cho nó.Bây giờ mọi thứ đã sẵn sàng, chúng tôi đã sẵn sàng để chạy ứng dụng. 4Sự kết luậnChúc mừng bạn đã đến cùng! Đây là một hướng dẫn cơ bản về cách bạn có thể xây dựng một ứng dụng GUI Quiz bằng Tkinter. Bạn có thể thêm nhiều tính năng hơn và làm cho giao diện người dùng hấp dẫn hơn nếu bạn muốn. Đây là kho lưu trữ mã: https://github.com/ashutoshkrris/gui-quiz-tkinter Đối với Windows, bạn có thể tải xuống ứng dụng thực thi từ đây. Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu Làm cách nào để tạo GUI trong Python?Tkinter là gói Python để tạo các ứng dụng GUI ... Nhập gói Tkinter và tất cả các mô -đun của nó .. Tạo một cửa sổ gốc. .... Sử dụng mainloop () để gọi vòng lặp vô tận của cửa sổ. .... Chúng tôi sẽ thêm một nhãn bằng lớp nhãn và thay đổi cấu hình văn bản của nó như mong muốn. .... Bây giờ thêm một nút vào cửa sổ gốc .. Chúng ta có thể sử dụng Python cho GUI không?Python cung cấp nhiều tùy chọn để phát triển GUI (giao diện người dùng đồ họa).Trong số tất cả các phương pháp GUI, Tkinter là phương pháp được sử dụng phổ biến nhất.Nó là một giao diện Python tiêu chuẩn cho bộ công cụ GUI TK được vận chuyển với Python.Python với Tkinter là cách nhanh nhất và dễ nhất để tạo các ứng dụng GUI. (Graphical User Interface). Out of all the GUI methods, tkinter is the most commonly used method. It is a standard Python interface to the Tk GUI toolkit shipped with Python. Python with tkinter is the fastest and easiest way to create the GUI applications.
Công cụ nào cung cấp GUI trong Python?Tkinter.Thường được gọi là bộ công cụ GUI đi đến bởi đa số các nhà phát triển Python, Tkinter được tạo ra để trang bị cho các nhà phát triển hiện đại một giao diện tiêu chuẩn cho bộ công cụ GUI TK với các ràng buộc Python của nó.
Làm thế nào để bạn đưa ra nhiều lựa chọn trong Python?Sử dụng trong khi đúng với câu lệnh IF, bạn có thể đưa ra một câu hỏi trắc nghiệm trong Python. you can make a multiple-choice question in Python. |