GUI dựa trên trình duyệt cho ứng dụng python [đã đóng]


8

Tôi muốn tạo GUI dựa trên web / trình duyệt cho ứng dụng python dòng lệnh. Mục tiêu là sử dụng các công nghệ HTML / JS để tạo GUI này. Là chính ứng dụng, nó cần chạy trên Linux và Windows và giao diện sẽ chỉ có thể truy cập được từ localhost (không được tiếp xúc với internet). GUI sẽ chứa 5 đến 10 trang.

Tôi không muốn một GUI máy tính để bàn truyền thống bao gồm HTML / JS, mà chỉ là một loạt các tệp html và một số loại bộ điều khiển giữa chúng và ứng dụng.

Tôi cũng muốn sử dụng lập trình không đồng bộ (ajax like) để tôi có thể tải và in dữ liệu trong GUI mà không cần làm mới toàn bộ trang. Tôi có thể sử dụng jQuery cho điều đó và một vài thứ khác.

Làm thế nào bạn sẽ đề nghị để thiết kế này? Hiệu suất không phải là chìa khóa ở đây, tôi đang nhìn vào độ tin cậy, tính di động và đơn giản.

Tôi đang nghĩ đến việc sử dụng một máy chủ / khung công tác HTTP python nhẹ (như CherryPy ) và sau này có thể là một hệ thống tạo khuôn mẫu Python (lúc đầu, nó sẽ chỉ là một vài trang).

EDIT:
Tôi đang tìm kiếm ý tưởng / đề xuất cách xây dựng cái này, không phải cho các lựa chọn thay thế cho GUI dựa trên trình duyệt / web.


2
Nếu nó chỉ chạy cục bộ, đơn giản hóa toàn bộ và viết GUI bằng python.
GrandmasterB

3
Đừng bị đe dọa bởi ý tưởng làm một gui máy tính để bàn. Tôi thấy gui của máy tính để bàn dễ sản xuất hơn nhiều so với giao diện dựa trên HTML.
GrandmasterB

4
Mặc dù tôi đồng ý họ có lợi thế mạnh mẽ, đây không phải là điều tôi muốn đạt được. Và như bạn nói, bạn thấy chúng dễ sản xuất hơn, nhưng đó không phải là trường hợp của tôi. Cuối cùng, tôi đang sử dụng các lib javascript cung cấp những thứ bạn không tìm thấy trong các khung GUI của Python.
ack__

2
Chia sẻ nghiên cứu của bạn giúp mọi người. Hãy cho chúng tôi những gì bạn đã cố gắng và tại sao nó không đáp ứng nhu cầu của bạn. Điều này chứng tỏ rằng bạn đã dành thời gian để cố gắng tự giúp mình, nó giúp chúng tôi tránh nhắc lại các câu trả lời rõ ràng và hầu hết nó giúp bạn có được câu trả lời cụ thể và phù hợp hơn. Xem thêm Cách hỏi
gnat

2
Một lần nữa, nó không bị đe dọa, trước đây tôi đã phát triển nhiều GUI máy tính để bàn, sử dụng Gtk, nCurses, WinForms, .Net và tôi thậm chí đã tạo một GUI trong trình biên dịch x86 bằng cách sử dụng radasm . Chỉ là nó không phù hợp với nhu cầu của tôi ở đây.
ack__

Câu trả lời:


5

Tôi hiện đang cố gắng làm khá nhiều điều tương tự. Có vẻ như Python có một máy chủ ( SimpleHTTPServer ) vì vậy tôi đang cố gắng tạo một ứng dụng web AngularJS sẽ tương tác với máy chủ Python.

Có khả năng có một dự án cefpython cho phép phân phối các ứng dụng Python dưới dạng các chương trình độc lập.


Tôi đã thấy những bình luận tiêu cực về SimpleHTTPServer ở đây trên SO, tôi khuyên bạn nên tìm một máy chủ khác (tôi có thể sẽ tìm CherryPy nhưng có nhiều người khác có sẵn). Bạn đã thử CEFPython chưa? Tôi e rằng nó không cung cấp các chức năng Chromium cập nhật nhất nhưng tôi có thể sai. Sử dụng một trình duyệt thực sự đảm bảo sự hỗ trợ, bảo trì và phát triển tích cực thực sự.
ack__

@ack__ Tôi hiện đang chơi với SimpleHTTPServer - Tôi không nghĩ có bất kỳ vấn đề gì nếu tất cả những gì bạn cần là một máy chủ một phiên. Tôi đang cố gắng thực hiện chỉ với các nhân viên từ thư viện mặc định để giúp cài đặt dễ dàng hơn trên hệ thống người dùng. Tôi chưa đi đến điểm khi tôi cần cefpython - nhưng có thể cập nhật CEF ở đó nếu cần.
Eugene

Ok, và bạn đã sử dụng phiên bản CEF nào? Tôi không quan tâm đến phần đa quy trình, thay vào đó là sự khác biệt giữa API Webkit và API nội dung Chromium, nếu có.
ack__

Bạn chỉ có thể lấy nhị phân từ trang web của họ. Họ có một ứng dụng CEFClient mà bạn có thể sử dụng để chọn ứng dụng của mình. Tôi cũng đã thấy một vài sản phẩm dựa trên CEF, mặc dù họ sử dụng node.js - github.com/adobe/brackets-shellgithub.com/rogerwang/node-webkit . ngoặc-shell chạy nút trong một quy trình riêng trong khi nút-webkit (lần trước tôi đã kiểm tra) đang thực hiện quy trình đó. Tôi tự hỏi làm thế nào khó khăn để thay thế nút bằng ứng dụng Python.
Eugene

3

Tiêu chí đã nêu của bạn là:

  • độ tin cậy
  • Tính di động
  • Đơn giản

Nếu đó là trường hợp, một ứng dụng máy tính để bàn là cách để đi. Không cần phải ném một máy chủ web vào hỗn hợp. Điều đó sẽ chỉ làm phức tạp vấn đề không có lợi ích thực tế.

Dựa trên chỉnh sửa của OP - mong muốn giao diện dựa trên HTML - một tuyến có thể có thể là nút-webkit . Điều này sẽ cho phép bạn tạo một ứng dụng máy tính để bàn chạy trên Windows, Linux và Mac bằng HTML & Javascript. Nó có một cách tiếp cận hơi giống với PhoneGap (ngoại trừ cùng một trình duyệt nhúng được sử dụng trên tất cả các nền tảng). Nút được sử dụng để cấp nguồn cho Javascript, cung cấp quyền truy cập vào một số lượng lớn các thư viện. Và bạn có quyền truy cập vào hệ thống cơ bản, cho phép bạn chạy chương trình dòng lệnh dựa trên Python.


2
Tôi cho rằng họ sẽ dễ dàng chứ không dễ dàng hơn. Nó sẽ không đáng tin cậy hơn bởi vì anh ta không quen thuộc với pytk. Ông không bao giờ nói bất cứ điều gì về dòng lệnh. Không có gì ÍT di động về một máy chủ cục bộ. Một lần nữa, nếu anh ta tự điều khiển, chẳng hạn, việc phát triển ứng dụng sẽ khó khăn hơn nhiều.
BeardedO

Bạn nhận được rất nhiều lợi ích bằng cách thực hiện UI của chúng tôi trong HTML - đó là lý do Steam, Spotify và những người khác hỗ trợ Chromium Embedded Framework. Adobe Brackets là một ví dụ thú vị - chúng có node.js chạy như một quy trình riêng cùng với quy trình UI CEF.
Eugene

Có lợi ích chính là sự linh hoạt. Ví dụ, bạn có ít sức đề kháng hơn để phát triển các điều khiển mới, bố cục phản ứng, bố cục trang động.
BeardedO

3
Chỉ cần làm rõ - bằng cách thực hiện UI trong HTML, bạn có được giao diện người dùng hiện đại đa nền tảng với sự hỗ trợ tối ưu hóa mạnh mẽ cho kết xuất phông chữ, chuyển đổi được tăng tốc GPU, v.v. Có rất nhiều thư viện và khung, công cụ được duy trì tốt, v.v. Ví dụ, một vấn đề khó chịu mà tôi gặp phải khi thực hiện UI trong Java là hỗ trợ Mac Retina. Không có vấn đề như vậy khi chạy trong trình duyệt.
Eugene

1
GrandmasterB Tôi không nói rằng bạn không thể làm những gì trình duyệt làm. Bạn có thể. Nhưng các trình duyệt đã thực hiện và tối ưu hóa mạnh mẽ (cạnh tranh rất khốc liệt ở đó).
Eugene

2

Tùy chọn cho các ứng dụng web Python:

  • django
  • web.py
  • werkzeug (bình w / hoặc w / o)
  • xoắn
  • cherry.py
  • nguyên wsgi
  • máy chủ đơn giản thô

Bất kỳ một trong số này sẽ làm việc. Theo như cách bạn xây dựng một ứng dụng; hầu hết các khung này có hướng dẫn trực tuyến. Chỉ cần làm theo và điều chỉnh nó để phù hợp với nhu cầu của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.