2013-03-19 55 views
1

我正在尋找將作爲Python桌面應用程序的一部分的GUI功能。Python GUI中的文本樹

該功能是一個文本樹拖放個別節點之間的功能。 此外,我希望能夠附加一個筆記與更長的文本到樹中的單個節點。 筆記將是可切換到展開或摺疊狀態。

它正是在this NestedSortable JQuery庫中除了可切換音符外。

你能告訴我根據這個特性,當代Python GUI的可能性是什麼?在JQuery示例中,我更喜歡具有現代外觀的輕量級GUI。

哪個GUI最適合這項任務? TkinterwxPython,pyQt,pyGTK或其他?或者你會選擇一些GUI + Javascript庫?爲什麼你更喜歡特定的GUI來實現所需的功能和輕量級的現代設計?

+1

我認爲最近PyGTK和PyQT都提供了這個功能。 – 9000 2013-03-19 19:39:00

+0

@ 9000這就是我所希望的。 – xralf 2013-03-19 19:43:03

回答

1

對於QTreeWidget或MVC設置,pyQT有很好的解決方案。 QTreeWidget是簡單的:

下面是使用PyQt4的

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class MainWindow(QMainWindow): 
    def __init__(self): 
     QMainWindow.__init__(self) 
     self.treewidget = QTreeWidget(self) 
     self.treewidget.setHeaderLabels(['a']) 
     self.treewidget.setDragEnabled(True) 
     self.treewidget.setAcceptDrops(True) 
     self.treewidget.setDropIndicatorShown(True) 
     self.treewidget.resize(300,300) 
     self.titems = [] 
     for i in xrange(100): 
      if not i%10: 
       pitem = QTreeWidgetItem(self.treewidget,["Parent %d"%i]) 
       self.titems.append(pitem) 
      else: 
       item = QTreeWidgetItem(pitem,["Child of %d"%i]) 
       self.titems.append(item) 
     self.show() 

app = QApplication(sys.argv) 
w = MainWindow() 
app.exec_() 
+0

感謝您使用'PyQT'中的代碼。我在'wxPython'中做了類似的事情,但不知道如何實現類似於NestedSortable的外觀。我試圖實現簡單的outliner(比如www.workflowy.com),並且所有python框架中的樹看起來都像一些文件管理器。我的目標是結果會看起來不同。信息的結構是可以的,但外觀不是我想要達到的。有沒有一些可能使UI看起來更好? – xralf 2013-04-09 14:00:52

+0

我對哪個GUI框架感興趣,我有更好的可能性來實現看起來接近NestedSortable的外觀。比起這個例子中的傳統桌面,眼睛更舒適。 – xralf 2013-04-09 14:10:31

+1

你真的可以用Qt做任何你想要的東西,只知道模仿基於web的GUI可能會涉及到一些自定義的工作(谷歌圖像的自定義qtreeview示例,一些很好的例子)。我是一名前wxPython用戶,但我不滿意某些wxWidget使用Linux進行構建時有些事情沒有理由崩潰(具有諷刺意味的是,modelview是在linux上崩潰的)。這裏有一個很好的鏈接閱讀: http://qt-project.org/doc/qt-4.8/model-view-programming.html 和 http://qt-project.org/doc/qt-4.8 /modelview.html 有一些很棒的例子和視圖。 – Chrismit 2013-04-09 21:16:04

0

嘗試使用etetoolkit一個小例子。它更簡單。

+0

這是一條評論,不是答案。 – 2017-03-21 14:52:12