2012-06-25 23 views
5

Một vài năm trước, tôi đã viết một tiện ích dòng lệnh python cho một đài phát thanh cộng đồng địa phương. Mục đích của công việc này là nâng cao luồng radio với siêu dữ liệu thu được từ Lịch Google. Điều này có nghĩa là bất kỳ ai nghe đài phát thanh trên luồng đều có thể đọc một luồng thông tin cập nhật về nội dung hiện đang phát và số phút sẽ đến khi chương trình tiếp theo bắt đầu.Bố cục và kiến ​​trúc chung để đưa ra một máy chủ dòng lệnh GUI cơ bản trong Ubuntu/Quckly?

Chủ yếu là tập lệnh này hoạt động rất tốt và đã cung cấp dịch vụ tốt trong nhiều năm.

Gần đây, một yêu cầu mới đã đến với tôi: Người dùng ứng dụng này muốn thỉnh thoảng dừng lại, bắt đầu hoặc tải lại quy trình (ví dụ: vì thông tin lịch biểu đã thay đổi). Thay vì dạy cho mọi thành viên của nhân viên phòng thu cách sử dụng dòng lệnh, chúng tôi đã nghĩ đến việc cung cấp cho công cụ này một GUI đơn giản.

Vì ứng dụng sẽ được phát triển và chỉ chạy trên Ubuntu, chúng tôi đã chọn Nhanh chóng làm khung phát triển đơn giản. Nó cũng được ghi lại và cung cấp gánh nặng thấp trên các nhà phát triển làm quen với nền tảng.

Chúng tôi hy vọng rằng thiết kế ban đầu của ứng dụng sẽ bao gồm một dải trình duyệt giống như các nút công cụ (bắt đầu, dừng, tải lại). Một bảng điều khiển lớn chứa thông báo trạng thái cuộn. Dưới đây là một thanh trạng thái nhỏ sẽ cung cấp một số thông tin chi tiết về trạng thái nội bộ hiện tại của chương trình.

Chịu hoàn toàn mới để lập trình GUI Tôi vẫn không chắc chắn làm thế nào để cấu trúc giao diện người dùng: những bí ẩn lớn vẫn:

  1. Những loại kiểm soát nên được sử dụng cho di chuyển văn bản phẳng nơi đăng nhập thông điệp sẽ lưu lượng. Điều này cần phải được chỉ đọc nhưng cập nhật mỗi khi một thông điệp tường trình được tạo ra. Tôi đã lên kế hoạch tạo một trình xử lý ghi nhật ký Python tùy chỉnh để chuyển hướng bất kỳ thông điệp tường trình nào tới bảng điều khiển này - nhưng cách dễ nhất để làm điều này là gì?

  2. Tập lệnh tôi có lúc này không hoạt động với time.sleep() - điều đó không có gì tốt cho GUI, vậy hành vi chính xác cho quy trình trong ứng dụng GUI không có gì để làm trong một thời gian?

  3. Quy trình của tôi ban đầu được thiết kế để chạy dưới dạng một chuỗi trong một thiết bị đầu cuối. Cho rằng tôi cần nó để chạy nhiều hơn hoặc ít hơn như trước đó có nghĩa là tôi nên xem xét việc đưa các công cụ GUI trên một thread riêng biệt cho quá trình công nhân. Có bất kỳ mẫu tài liệu nào về cách thực hiện điều này trong khuôn khổ Quickly không?

  4. Tiếp tục - có cách nào tốt để làm cho các ứng dụng được phát triển với Chạy nhanh trên các nền tảng không phải là Ubuntu không? Ví dụ, tôi có thể dễ dàng điều chỉnh ứng dụng của mình để làm việc trên bất kỳ hệ điều hành dựa trên Linux nào khác. Điều gì về một cái gì đó không liên quan như OSX hoặc Windows?

Cảm ơn!

Trả lời

1
  1. Bạn có thể sử dụng GtkTextView, chỉ đọc. Có lẽ bạn có thể mở rộng nó để ống-nó với đầu ra.
  2. Bạn có thể sử dụng idle_add() (có sẵn trong Glib) để chạy gọi phương thức/chức năng bất kỳ khi nào chương trình không hoạt động.
  3. Bạn có thể muốn kiểm tra How to work with threads in pygtk.
  4. PyGTK là di động. Nhanh chóng là trình bao bọc để tạo các ứng dụng với PyGTK/PyGObject và một số tính năng bổ sung.Tùy thuộc vào mã của bạn, nó không phải là rất khó khăn để giữ cho nó di động.
Các vấn đề liên quan