2010-05-27 99 views
5

我正在重寫一個Access數據庫的計劃階段,我幾年前寫了一個完整的程序。我有很少的編碼經驗,但還不足以稱自己是程序員。我一定會學習,所以我希望儘可能簡單。我已經爲我的程序決定使用Python和SQLite,但是我需要下一個決定的幫助。Python/Sqlite程序,寫成瀏覽器應用程序還是桌面應用程序?

這裏是我的情況

1)它會在本地每一臺機器上運行,所有Windows計算機

2)我真的想用的顏色,漂亮的屏幕,菜單,列出一個好看的GUI等等,

3)我在考慮使用瀏覽器界面,因爲(一)從我讀過的,瀏覽器應用程序 看起來真的很棒,(二)我明白有很多免費工具來通過拖放工具協助設置GUI/GUI代碼,以便幫助我「保持簡單」目標。

4)我想要的程序是完全便攜式所以它從一個單一的文件夾完全運行在用戶的個人電腦上,沒有必要爲它安裝(S)來運行

(如果我做了一個瀏覽器應用程序,是不是有一個用戶的瀏覽器設置可能影響或破壞應用程序的可能性。可能性有多大呢?)

對於我的情況,應該/我可以讓它變成一個瀏覽應用程序?我的情況有什麼優點和缺點?

回答

4

將桌面應用程序編寫爲本地託管的Web應用程序通常不是一個好主意。儘管可以使用HTML,CSS和Javascript創建出色的用戶界面,但使用傳統的GUI框架創建界面要容易得多。

使用網絡技術創建桌面GUI會給應用程序帶來很多不必要的複雜性。

  • 使用HTML和CSS創建用戶界面非常困難且耗時。 HTML是文檔標記語言和CSS是文檔格式化語言;既不適合創建GUI。
  • 使用網絡技術使您的應用程序依賴於用戶的網絡瀏覽器。許多人仍在使用舊版本,IE 6和7等瀏覽器不符合現代標準。如果不試圖追蹤僅發生在某些瀏覽器上的接口錯誤,您將花費數小時。
  • 您需要通過Web服務器爲您的應用程序提供服務,引入另一層複雜性。您的應用程序必須通過受限制的Web技術與您的界面進行通信,而不會受到真正Web應用程序的任何好處。

我推薦使用桌面GUI框架。特別是,我認爲wxPython將是您使用的最佳GUI框架;它穩定,廣泛使用,有據可查,並且具有高度的便攜性。另外,您可以使用基於GUI的界面構建器(如Boa Constructor或可能的wxGlade)來設計應用程序的用戶界面。總之,使用幾乎任何桌面GUI框架創建應用程序比使用Web技術更容易。

3
  1. 你沒有提及,如果你在Windows或Linux或任何其他操作系統。
  2. 如果你正在寫一個瀏覽器應用程序,你會需要的第一件事情是一個Web服務器,如果每個用戶運行的是他的本機=>上的應用程序意味着每個用戶都必須有一個Web服務器在本地運行。

此外還有很多快速開發GUI工具包,如wxPython和Glade,使GUI應用程序的設計變得簡單和容易。

我會建議,如果你正在建立一個網絡應用程序 - >採取瀏覽器路線。

如果您正在構建獨立應用程序,請使用本機應用程序。

下面是所有框架的幾乎全面的列表。你可以選擇任何適合你的需求。 http://wiki.python.org/moin/GuiProgramming

我個人比較喜歡PyGtk,但是如果你之前沒有做過任何GUI編程的話,它有一點關聯的學習曲線。

3
+0

這是否會作爲便攜式應用程序運行? (全部來自一個文件夾,不需要任何類型的安裝) – ChrisC 2010-05-27 21:08:06

1

我認爲它應該工作。你怕什麼呢?代理設置,防火牆?

我想在本地運行的Web服務器是不難電力用戶,但它可能是普通用戶(即使你的應用集成)的問題。

也許你應該運行你的應用程序作爲服務,因爲強制用戶進入網頁之前啓動服務器,可能是令人沮喪的。

我更喜歡其他解決方案。我可能會使用Java(Swing)或C++與QT。但我喜歡你的方法,特別是它可以輕鬆實現原型設計。如果您更喜歡網頁風格的開發,您可以嘗試http://www.appcelerator.com/products/titanium-desktop-application-development/它使用html + java script + webkit創建桌面應用程序。但我沒有嘗試過我自己(但我想)。

此外,Adobe Air可能是您的不錯選擇。

+0

快速瀏覽一下,appcelerator看起來很有趣。我非常確定我想和其他選項一起使用Python,並且它表示它完全支持Python(儘管我不確定完全支持是什麼意思)。 – ChrisC 2010-05-27 21:19:34

4

我已經完成了在Windows上運行的桌面應用程序,我認爲這是一種開發應用程序的好方法。我想推薦看看bottle。它是一個輕量級的Web框架。例如,它比Django的能力更差,但它表現不錯。如果你想部署在沒有Python的機器上,它可以用py2exe打包。

網上有很多javascript庫可以幫助你。我喜歡jquery和jquery-ui,raphaeljs ......但還有其他一些。

我的應用程序正在運行到基於mshtml component of Pyjama-Desktop的小瀏覽器中。這樣,用戶不知道它是一個Web應用程序。但是,您可以讓應用程序進入喜歡的瀏覽器,webbrowser python module可能會讓您感興趣。

如果您的應用程序需要訪問您的文件系統,基於瀏覽器的應用程序可能會非常棘手。出於安全原因,瀏覽器不能完全訪問您的文件系統。但是,您可以使用ajaxupload模仿文件並使用iframe保存文件。

如果它只處理一個sqllite數據庫,我認爲這是一個很好的選擇。

我希望它有幫助

1

我會建議一個瀏覽器應用程序。這消除了在客戶端計算機上進行安裝的需要(因此與操作系統無關),並且如果爲服務器正確設置了DNS,則可以從世界任何地方訪問。

使用Web界面使您可以使用一些更強大的用戶界面工具,如:

  • 使用CSS爲壯觀的設計
  • 的JavaScript工具的可用性的能力(jQueryExtJS等)
  • 輕鬆相比桌面應用程序
  • 高等無障礙
  • 一致的用戶界面修改(例如用戶已經知道如何「退」工程等)
  • 集中更新(只需更新服務器,而不是每個客戶端)
1

你的應用程序類型的選擇,將與兩到技術約束和類型您計劃提供的用戶體驗。

  • 富客戶端應用程序: 通常作爲獨立應用程序開發。 可以支持斷開連接或偶爾連接的情況。 使用本地機器的處理和存儲資源。

  • Web應用程序: 可以支持多種平臺和瀏覽器。 僅支持連接方案。 使用服務器的處理和存儲資源。

我個人比較喜歡PyQt在你的情況下爲便攜式應用程序。

的PyQt的主頁是http://www.riverbankcomputing.com/software/pyqt/

PyQt的支持在Windows,Linux,UNIX和MacOS/X平臺。

PyQt4是一套針對Qt 4的Python綁定,它是在GPL(版本2和3,附加許可證例外)和商業許可下雙重授權的。另外還有諾基亞的PySide - 新的替代綁定(截至2009年11月)和LGPL許可協議,使用PyQt4很難兼容API(至少在Qt 4.6之前)。

工具和文檔

Qt Designer是一個功能強大的跨平臺GUI佈局和表單構建器。它允許您使用屏幕表單快速設計和構建小部件和對話框,使用與您的應用程序中使用的相同小部件。 PyQt4中暴露出很多的Qt 4(諾基亞)到Python的功能,包括:

  • 一套全面的小部件

  • 靈活的佈局管理器

    應用程序
  • 標準GUI功能(菜單,工具欄,碼頭窗口)

  • 應用程序組件(信號和插槽)之間的簡單通信

  • 統一的繪畫體系的透明度,抗鋸齒,OpenGL的集成和支持SVG

  • 國際化(i18n)支持與Qt語言翻譯工具集成

  • 等等

0

你的問題有點寬泛。我儘可能地盡力掩護。

首先,我的理解和我的假設。

在你的情況下,sqlite數據庫只是一個數據存儲。只有一個進程(除非你的應用程序是多進程的)將訪問它,所以你不需要擔心鎖定問題。該應用程序不需要通過網絡與其他實例等進行通信。這是一個單一的桌面應用程序。該平臺是Windows。

下面是一些想到的想法。

  • 如果您使用Python(基於Web或桌面)開發應用程序,則必須將其打包爲單個可執行文件並將其分發給用戶。他們可能必須安裝Python運行時以及您可能使用的任何額外模塊。
  • 根據我的經驗,使用獨立窗口小部件系統比使用Javascript的瀏覽器更容易使用Guis。睡衣之類的東西讓這件事變得更好,但仍然很難。
  • 儘管在每臺計算機上運行本地Web應用程序並不是不可能的,但如果您集中管理它,您的真正優勢就會顯現出來。一個地方更新軟件。無需「分發」等。這當然需要您使用更強大的數據庫系統,並且您可以實際管理多個用戶。它也需要你擔心瀏覽器的特殊怪癖。

我會用一個簡單的桌面應用程序,使用預先打包的工具包(也許Tkinter與Python一起發行)。這不是最好的方法,但它會避免你的問題。我還會考慮在C#等窗口上使用更「頭等」的語言,以便運行時和其他東西已經存在。您對花哨的GUI的要求是次要的,並且我建議您在將注意力集中在花裏胡哨之前使功能正常工作。

祝你好運。