<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                上節課我們學習了使用tkinter開發用戶界面。這節課,我們用tkinter重新實現一下備忘清單,給備忘清單加一個圖形界面。 ![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1536428077345&di=a0535deff61f692fd927b946a1751195&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimage%2Fc0%253Dshijue1%252C0%252C0%252C294%252C40%2Fsign%3D2130f3273ffae6cd18b9a32267da6551%2F7a899e510fb30f24f4bcfe13c295d143ad4b03ff.jpg) ## 渲染備忘清單列表 ![](https://s1.ax1x.com/2018/09/08/iPORWn.png) 首先,我們使用`ListBox`渲染備忘列表。我們使用for循環迭代todo實例中的每個備忘,插入到`ListBox`。然后調用`pack()`方法渲染列表。 ## 新增備忘 ![](https://s1.ax1x.com/2018/09/08/iPOoeU.png) 首先,我們使用`Entry`空間渲染一個輸入框。然后定義一個`Button`,并給它綁定上`saveTask`函數。 在saveTask函數中,我們獲取`Entry`控件里的內容,并調用todo對象的`addTodo`方法完成備忘存儲。 ## 刷新列表 ![](https://s1.ax1x.com/2018/09/08/iPOXS1.png) 新增備忘后,界面上的備忘列表并沒有被刷新調用。因此,我們將下面的這段代碼抽成函數: ~~~ for task in todo.getAllToto(): taskListBox.insert(0, task) taskListBox.pack() ~~~ 在程序運行和新增備忘后調用這個函數,完成新備忘信息的界面同步。 ## 刪除任務 ![](https://s1.ax1x.com/2018/09/08/iPX9Te.png) 刪除列表的代碼稍微有點復雜。我們給`taskListBox` 綁定了一個函數。注意我們使用的事件名字是:`<<ListboxSelect>>`。在刪除備忘代碼里,我們通過解析`event`對象的`widget`屬性,從而獲得當前點擊的是哪個備忘下標。 完成這個功能后,我們的圖形化備忘清單就完成了。怎么樣,會做了嗎?當我們需要做圖形界面時,記得找到正確的空間就可以完成我們的程序開發了。 完整代碼如下: ``` from tkinter import * class Todo: def __init__(self): self.taskList = [] self.__fileLocation__ = "./todo.txt" self.__loadTask__() def addTodo(self, thing): self.taskList.append(thing) self.__saveTodo__() return True def removeTodo(self, thing): if not thing in self.taskList: return False else: self.taskList.remove(thing) self.__saveTodo__() return True def searchTodo(self, thing): for todo in self.taskList: if thing in todo: return todo return None def getAllToto(self): return self.taskList def __loadTask__(self): file = open(self.__fileLocation__, 'r') self.taskList = file.readlines() def __saveTodo__(self): file = open(self.__fileLocation__, 'w') file.write('\n'.join(self.taskList)) file.close() def saveTask(): task = entry.get() if task in todo.getAllToto(): print('error') button['background'] = 'red' button.pack() else: todo.addTodo(entry.get()) loadTask() def loadTask(): for task in todo.getAllToto(): print(task) listBox.insert(0, task) listBox.pack() def removeTask(event): index = event.widget.curselection()[0] print(todo.getAllToto()[index]) todo = Todo() root=Tk() listBox=Listbox(root) listBox.bind('<<ListboxSelect>>', removeTask) loadTask() entry = Entry(root) entry.pack() button = Button(root,text='新增',command=saveTask) button.pack() root.mainloop() ``` ## 總結 這節課,我們使用tkinter逐步完成了一個界面版的備忘清單。從程序開發中我們可以感知到,圖形界面開發首先要做功能分解。然后按照視圖層(button),邏輯層(函數),實現(Todo類)分層開發。代碼得到了有效隔離。當然,這個項目還可以進一步優化。將圖形界面的UI部分再做一個類,使代碼得到更好的封裝。 在后續的課程里,我們會再迭代出一個web版的任務清單,小朋友們可以多對比這幾個版本的區別。整個程序的代碼,阿達老師會上傳到git上,方便大家下載查看。 **阿達老師-孩子身邊的編程專家** *完整課程請關注阿達老師,主頁里有完整的課程目錄和觀看地址*
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看