2011-08-31 70 views
0

我創建了一些非常複雜的Python代碼,但它基本上要求輸入,然後根據給定的輸入以及一些圖和許多等式輸出一個巨大的DNA序列。我想將這段代碼嵌入到用戶界面中,我很可能會用wxPython或Tkinter進行操作。我不明白如何將我的代碼插入用戶界面。請幫忙!謝謝!將Python代碼嵌入到GUI中

回答

0

GUI將處理您的輸入和輸出。因此,如果您的代碼當前是一個可以讀取和寫入控制檯的大而長的腳本,那麼您首先需要將其重構爲一個類或一組獨立函數(取決於您的代碼),它們將輸入作爲參數,並返回結果。如果你寫得很好,你甚至可以保留你的控制檯應用程序,同時讓其他應用程序可以導入類或函數。

僞例如:

# stuff.py 

class StuffDoer: 
    def __init__(self, val1, val2, ...): 
     self.val1 = val1 
     self.val2 = val2 

    def calculate_sequence(self): 
     # do some stuff 
     return sequence 

    def create_graph(self, target_folder): 
     # generate the graph and save it 
     return path_to_graph 

if __name__ == '__main__': 
    # the console interface 
    val1 = raw_input('Enter value 1:') 
    val2 = raw_input('Enter value 2:') 

    s = StuffDoer(val1, val2) 
    seq = s.calculate_sequence() 
    print('Sequence: %s' % seq) 
    path = s.create_graph('/temp') 
    print('Wrote graph to %s' % path) 

你可能已經知道這一點,但如果你直接運行在模塊內if __name__ == '__main__':的代碼纔會執行​​。如果你使用import stuff來代替另一個模塊(比如你的GUI代碼),那麼你只需要訪問stuff.StuffDoer類的定義。

下面是GUI代碼中發生的示例。在點擊某個按鈕之類的界面事件後,您將調用一個函數,從窗體上的某些字段中檢索輸入,並將它們提供給StuffDoer的一個實例,並調用您需要的任何類函數來生成結果。如果沒有問題,則使用生成的結果更新表單,然後完成。如何做到這一點的細節取決於你的GUI工具包。

您的GUI不需要知道如何計算DNA序列,您的DNA測序模塊不需要知道輸入來自何處或輸出如何顯示。

0

你的問題並不十分清楚,但如果你想要的用戶輸入是Python代碼,你想爲你的GUI工具包找到一個Python代碼編輯器小部件。

例如,如果您正在使用PyQt的,你可以使用QScintilla,看到here for an example

+0

是啊,我想加入兩個在一起,我創建的代碼我gui設計,但我不明白如何做到這一點 – MIT

1

對你來說最好的建議不是開始嘗試構建真正的GUI。學習GUI編程並不是微不足道的,你應該慢慢地開始,並努力工作。

選擇一個框架(Tkinter,wxPython,Qt),並從最簡單的教程開始。然後逐漸嘗試更艱鉅的任務,直到你有足夠的經驗來完成你真正的任務。