Hướng dẫn ipywidgets in python - ipywidget trong python
Hàm interact(f, x='Hi there!');9 ( @interact(x=True, y=1.0) def g(x, y): return (x, y)0) tự động tạo các điều khiển giao diện người dùng (UI) để khám phá mã và dữ liệu tương tác. Đó là cách dễ nhất để bắt đầu sử dụng các tiện ích Ipython. Show # Imports for JupyterLite try: import piplite await piplite.install(['ipywidgets']) except ImportError: pass from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets Cơ bản ________ 29Ở cấp độ cơ bản nhất, interact(f, x='Hi there!');9 tự động điều khiển UI cho các đối số chức năng và sau đó gọi hàm với các đối số đó khi bạn thao tác các điều khiển một cách tương tác. Để sử dụng interact(f, x='Hi there!');9, bạn cần xác định một chức năng mà bạn muốn khám phá. Dưới đây là một hàm trả về đối số duy nhất của nó @interact(x=True, y=1.0) def g(x, y): return (x, y)4. Khi bạn chuyển chức năng này dưới dạng đối số đầu tiên cho interact(f, x='Hi there!');9 cùng với đối số từ khóa số nguyên ( @interact(x=True, y=1.0) def g(x, y): return (x, y)6), một thanh trượt được tạo và liên kết với tham số hàm. Khi bạn di chuyển thanh trượt, hàm được gọi và giá trị trả về của nó được in. Nếu bạn vượt qua @interact(x=True, y=1.0) def g(x, y): return (x, y)7 hoặc @interact(x=True, y=1.0) def g(x, y): return (x, y)8, interact(f, x='Hi there!');9 sẽ tạo hộp kiểm: Nếu bạn vượt qua một chuỗi, interact(f, x='Hi there!');9 sẽ tạo một hộp văn bản. interact(f, x='Hi there!'); interact(f, x='Hi there!');9 cũng có thể được sử dụng như một người trang trí. Điều này cho phép bạn xác định một chức năng và tương tác với nó trong một lần chụp. Như ví dụ này cho thấy, interact(f, x='Hi there!');9 cũng hoạt động với các chức năng có nhiều đối số. @interact(x=True, y=1.0) def g(x, y): return (x, y) Khắc phục đối số bằng cách sử dụng ________ 43Có những lúc bạn có thể muốn khám phá một hàm bằng cách sử dụng interact(f, x='Hi there!');9, nhưng sửa một hoặc nhiều đối số của nó với các giá trị cụ thể. Điều này có thể được thực hiện bằng cách gói các giá trị với hàm def h(p, q): return (p, q)3. def h(p, q): return (p, q) Khi chúng tôi gọi interact(f, x='Hi there!');9, chúng tôi vượt qua def h(p, q): return (p, q)7 cho Q để giữ nó cố định ở giá trị def h(p, q): return (p, q)8. interact(h, p=5, q=fixed(20)); Lưu ý rằng một thanh trượt chỉ được sản xuất cho def h(p, q): return (p, q)9 vì giá trị của interact(h, p=5, q=fixed(20));0 là cố định. Chữ viết tắt WidgetKhi bạn chuyển một đối số từ khóa có giá trị nguyên của interact(h, p=5, q=fixed(20));1 ( @interact(x=True, y=1.0) def g(x, y): return (x, y)6) cho interact(f, x='Hi there!');9, nó sẽ tạo ra một điều khiển thanh trượt có giá trị số nguyên với phạm vi interact(h, p=5, q=fixed(20));4. Trong trường hợp này, interact(h, p=5, q=fixed(20));1 là viết tắt cho một tiện ích trượt thực tế: IntSlider(min=-10, max=30, step=1, value=10) Trên thực tế, chúng ta có thể nhận được kết quả tương tự nếu chúng ta vượt qua interact(h, p=5, q=fixed(20));6 này làm đối số từ khóa cho @interact(x=True, y=1.0) def g(x, y): return (x, y)4: interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10)); Bảng sau đây đưa ra một cái nhìn tổng quan về các loại đối số khác nhau và cách chúng ánh xạ tới các điều khiển tương tác:
Lưu ý rằng việc thả xuống được sử dụng nếu một danh sách hoặc danh sách các bộ dữ liệu được đưa ra (biểu thị các lựa chọn riêng biệt) và một thanh trượt được sử dụng nếu một tuple được đưa ra (biểu thị một phạm vi). Bạn đã thấy làm thế nào các hộp kiểm và tiện ích văn bản hoạt động ở trên. Ở đây, nhiều chi tiết hơn về các chữ viết tắt khác nhau cho các thanh trượt và thả xuống được đưa ra. Nếu một số nguyên 2 được truyền IntSlider(min=-10, max=30, step=1, value=10)8, một thanh trượt có giá trị số nguyên được tạo ra với các giá trị tối thiểu và tối đa đó (toàn diện). Trong trường hợp này, kích thước bước mặc định của IntSlider(min=-10, max=30, step=1, value=10)9 được sử dụng. Nếu một số nguyên được thông qua IntSlider(min=-10, max=30, step=1, value=10)3, kích thước bước cũng có thể được đặt. Một thanh trượt có giá trị nổi được tạo ra nếu bất kỳ phần tử nào của bộ dữ liệu là phao. Ở đây mức tối thiểu là interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));1, tối đa là interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));2 và kích thước bước là interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));3 (mặc định). interact(f, x=(0.0,10.0)); Kích thước bước có thể được thay đổi bằng cách truyền một phần tử thứ ba trong bộ tuple. interact(f, x=(0.0,10.0,0.01)); Đối với cả thanh trượt có giá trị số nguyên và float, bạn có thể chọn giá trị ban đầu của tiện ích bằng cách chuyển đối số từ khóa mặc định cho hàm Python bên dưới. Ở đây chúng tôi đặt giá trị ban đầu của thanh trượt nổi thành interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));4. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets0 Các menu thả xuống được xây dựng bằng cách truyền một danh sách các chuỗi. Trong trường hợp này, cả hai chuỗi đều được sử dụng làm tên trong UI menu thả xuống và được truyền cho hàm Python bên dưới. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets1 Nếu bạn muốn một menu thả xuống chuyển các giá trị không chuỗi cho hàm Python, bạn có thể vượt qua danh sách các cặp interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));5. Các mục đầu tiên là các tên trong UI menu thả xuống và các mục thứ hai là các giá trị là các đối số được truyền đến hàm Python bên dưới. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets2 Cuối cùng, nếu bạn cần kiểm soát chi tiết hơn so với việc viết tắt, bạn có thể vượt qua một ví dụ interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));6 làm đối số. A interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));6 là một tiện ích nhằm mục đích kiểm soát một giá trị duy nhất. Hầu hết các tiện ích đi kèm với ipywidgets kế thừa từ interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));6. Để biết thêm thông tin, hãy xem phần này về các loại widget.bundled with ipywidgets inherit from interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));6. For more information, see this section on widget types. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets3 ________ 79Ngoài interact(f, x='Hi there!');9, Ipython cung cấp một chức năng khác, interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9, rất hữu ích khi bạn muốn sử dụng lại các tiện ích được tạo hoặc truy cập dữ liệu liên kết với các điều khiển UI. Lưu ý rằng không giống như interact(f, x='Hi there!');9, giá trị trả về của hàm sẽ không được hiển thị tự động, nhưng bạn có thể hiển thị một giá trị bên trong hàm với interact(f, x=(0.0,10.0));3. Dưới đây là một hàm hiển thị tổng của hai đối số của nó và trả về tổng. Dòng interact(f, x=(0.0,10.0));4 có thể bị bỏ qua nếu bạn không muốn hiển thị kết quả của chức năng. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets4 Không giống như interact(f, x='Hi there!');9, interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9 trả về một ví dụ interact(f, x=(0.0,10.0));7 thay vì hiển thị ngay lập tức tiện ích. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets5 Tiện ích này là interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9, một lớp con của interact(f, x=(0.0,10.0));9, là một thùng chứa cho các tiện ích khác. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets6 Trẻ em của interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9 là hai thanh trượt có giá trị nguyên và tiện ích đầu ra, được sản xuất bởi các chữ viết tắt của Widget ở trên. from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets7 Để thực sự hiển thị các widget, bạn có thể sử dụng chức năng Ipython từ ____84. Tại thời điểm này, các điều khiển giao diện người dùng hoạt động giống như chúng nếu interact(f, x='Hi there!');9 đã được sử dụng. Bạn có thể điều khiển chúng tương tác và chức năng sẽ được gọi. Tuy nhiên, phiên bản widget được trả về bởi interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9 cũng cho phép bạn truy cập vào các đối số từ khóa hiện tại và giá trị trả về của hàm Python cơ bản. Dưới đây là các đối số từ khóa hiện tại. Nếu bạn chạy lại ô này sau khi thao tác các thanh trượt, các giá trị sẽ thay đổi. Dưới đây là giá trị trả về hiện tại của hàm. Vô hiệu hóa cập nhật liên tụcKhi tương tác với các chức năng chạy dài, phản hồi thời gian thực là một gánh nặng thay vì hữu ích. Xem ví dụ sau: from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets8 from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets9 interact(f, x='Hi there!');0 Lưu ý rằng đầu ra được cập nhật ngay cả trong khi kéo chuột lên thanh trượt. Điều này không hữu ích cho các chức năng chạy dài do độ trễ: interact(f, x='Hi there!');1 Có hai cách để giảm thiểu điều này. Bạn chỉ có thể thực thi theo yêu cầu hoặc hạn chế thực thi các sự kiện phát hành chuột. ________ 94Hàm interact(f, x=(0.0,10.0,0.01));4 cung cấp một biến thể tương tác cho phép bạn hạn chế thực thi để nó chỉ được thực hiện theo yêu cầu. Một nút được thêm vào các điều khiển tương tác cho phép bạn kích hoạt sự kiện thực thi. interact(f, x='Hi there!');2 Bạn có thể làm điều tương tự với interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9 bằng cách sử dụng interact(f, x=(0.0,10.0,0.01));7 làm đối số thứ hai, như được hiển thị bên dưới. interact(f, x='Hi there!');3 ________ 98Nếu bạn đang sử dụng các tiện ích trượt, bạn có thể đặt interact(f, x=(0.0,10.0,0.01));8 kwarg thành @interact(x=True, y=1.0) def g(x, y): return (x, y)8. interact(f, x=(0.0,10.0,0.01));8 là một kwarg của các vật dụng trượt, hạn chế thực thi các sự kiện phát hành chuột. interact(f, x='Hi there!');4 Kiểm soát thêm giao diện người dùng: ________ 102from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets02 cung cấp tính linh hoạt bổ sung: Bạn có thể kiểm soát cách các thành phần UI được đặt ra. Không giống như interact(f, x='Hi there!');9, interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));9 và interact(f, x=(0.0,10.0,0.01));4, from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets02 không tạo giao diện người dùng cho các tiện ích. Điều này rất mạnh mẽ, bởi vì nó có nghĩa là bạn có thể tạo một tiện ích, đặt nó vào một hộp, sau đó chuyển tiện ích cho from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets02 và có quyền kiểm soát tiện ích và bố cục của nó. interact(f, x='Hi there!');5 Lập luận phụ thuộc vào nhau Các đối số phụ thuộc vào nhau có thể được thể hiện bằng tay bằng cách sử dụng from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets09. Xem ví dụ sau, trong đó một biến được sử dụng để mô tả giới hạn của một biến khác. Để biết thêm thông tin, vui lòng xem Notebook ví dụ về sự kiện Widget.widget events example notebook. interact(f, x='Hi there!');6 Đầu ra nhấp nháy và nhảyThỉnh thoảng, bạn có thể nhận thấy sự nhấp nháy đầu ra và nhảy đầu ra tương tác, khiến vị trí cuộn máy tính xách tay thay đổi khi đầu ra được cập nhật. Điều khiển tương tác có bố cục, vì vậy chúng ta có thể đặt chiều cao của nó thành một giá trị phù hợp (hiện được chọn bằng tay) để nó không thay đổi kích thước khi nó được cập nhật. interact(f, x='Hi there!');7 Tương tác với nhiều chức năngBạn có thể muốn có một tiện ích duy nhất tương tác với nhiều chức năng. Điều này là có thể bằng cách liên kết các tiện ích với cả hai hàm bằng hàm Interactive_output (). Thứ tự thực hiện các chức năng sẽ là thứ tự chúng được liên kết với tiện ích. interact(f, x='Hi there!');8 |