Python TK編程第一部分 Hello Again

當你想寫大一點的程序的時候,將你的代碼封裝到一個或者多個類里會是一個不錯的辦法。下面'hello world'這個例子來自Matt Conway的Tkinter Life Preserver.

?

[python]?view plain?copy
  1. from?Tkinter?import?*??
  2. ??
  3. class?App:??
  4. ??
  5. ????def?__init__(self,?master):??
  6. ??
  7. ????????frame?=?Frame(master)??
  8. ????????frame.pack()??
  9. ??
  10. ????????self.button?=?Button(??
  11. ????????????frame,?text="QUIT",?fg="red",?command=frame.quit??
  12. ????????????)??
  13. ????????self.button.pack(side=LEFT)??
  14. ??
  15. ????????self.hi_there?=?Button(frame,?text="Hello",?command=self.say_hi)??
  16. ????????self.hi_there.pack(side=LEFT)??
  17. ??
  18. ????def?say_hi(self):??
  19. ????????print?"hi?there,?everyone!"??
  20. ??
  21. root?=?Tk()??
  22. ??
  23. app?=?App(root)??
  24. ??
  25. root.mainloop()??
  26. root.destroy()?#?optional;?see?description?below??

當你運行程序時,會出現下面的窗口。

?

如果你點擊右邊的按鍵, “hi there, everyone!”?將會輸出在控制臺。 如果你點擊左邊的按鍵,程序就會終止。

程序講解:

這個簡單的程序是用類寫的. 構造器 (__init__?方法) 接受一個主窗口作為參數(root), 然后創建了幾個子控件。 構造器首先創建了一個?Frame控件。frame是一個簡單的容器,在這個例子中,他僅僅用來防止其它2個控件。

class App:def __init__(self, master):frame = Frame(master)frame.pack()

我們通過Frame類創建一個實例,并把它保存為實例的局部變量?frame. 之后,我們對其使用pack方法使其可見。

然后我們創建2個Button,作為frame的子控件。

self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
self.button.pack(side=LEFT)self.hi_there = Button(frame, text="Hello", command=self.say_hi)
self.hi_there.pack(side=LEFT)

這一次我們通過關鍵字參數的形式給構造函數船體幾個參數。 第一個button的text屬性為“QUIT”,并設置前景色為紅色。第一個button的text屬性為“Hello”.。這兩個Button的command選型也都設置了參數。這個選項用來設置一個函數或者綁定的方法,當button被點擊時,相應的函數或者方法就會調用。?

這兩個button實例作為實例屬性存儲。他們都使用pack方法,但這次還使用了?side=LEFT參數。這意味著他們將會被盡可能的放置在frame的左邊; 第一個button會被放在frame的左邊,第二個button會緊貼著第一個button放置。一般來說,控件被放置的位置都是相對于他們的主控件而言的。如果沒有指定side選項,默認為side=TOP.

?“hello”?button 的回調函數如下所示。當用鼠標點擊button時,它至是簡單的想控制臺輸出一行信息:

def say_hi(self):print "hi there, everyone!"

最后,我們寫一些代碼創建?Tk?root 窗口, 并把它作為參數傳遞給App類,它會成為其它控件的父窗口。

root = Tk()app = App(root)root.mainloop()
root.destroy()

調用?mainloop?使Tk進入事件循環, 當點擊QUIT或者關閉窗口時程序才會終止。

destroy只有你在特殊的環境下運行這個例子才需要;當時間循環被終止的時候,它會明確的釋放這個窗口。 一些開發環境只有調用這個方法才會終止Python進程。

轉載于:https://www.cnblogs.com/monsteryang/p/6558523.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371313.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371313.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371313.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

視網膜脫離oct報告圖_剛剛,愛爾眼科發布關于艾芬醫生診療過程的核查報告

剛剛,愛爾眼科醫院集團發布關于艾芬女士診療過程的核查報告,內容如下:得悉艾芬女士對武漢愛爾眼科醫院白內障診療存疑,愛爾眼科醫院集團高度重視,第一時間成立了工作組奔赴武漢,對事件的診療全過程開展了核…

20145233《網絡對抗》第二周 后門原理與實踐

20145233《網絡對抗》第二周 后門原理與實踐 實驗內容 windows主機與kali虛擬機實現互聯互通使用netcat獲取主機操作Shell,cron啟動使用socat獲取主機操作Shell, 任務計劃啟動使用MSF meterpreter生成可執行文件,利用ncat或socat傳送到主機并運行獲取主機…

Spring 3.1:緩存和EhCache

如果在網上查找使用Spring 3.1內置緩存的示例,那么通常會碰到Spring的SimpleCacheManager ,Spring的家伙說這對“用于測試或簡單的緩存聲明很有用”。 實際上,我更喜歡將SimpleCacheManager看作是輕量級的,而不是簡單的。 在您希望…

mysql-表完整性約束

閱讀目錄 一 介紹二 not null與default三 unique四 primary key五 auto_increment六 foreign key七 總結一 介紹 回到頂部 約束條件與數據類型的寬度一樣,都是可選參數 作用:用于保證數據的完整性和一致性主要分為: PRIMARY KEY (PK) 標識…

可消費消息數量_17 個方面,綜合對比 主流消息隊列

一、資料文檔二、開發語言三、支持的協議四、消息存儲五、消息事務六、負載均衡七、集群方式八、管理界面九、可用性十、消息重復十一、吞吐量TPS十二、訂閱形式和消息分發十三、順序消息十四、消息確認十五、消息回溯十六、消息重試十七、并發度本文將從,Kafka、Ra…

opencv2.4.13+python2.7學習筆記--使用 knn對手寫數字OCR

閱讀對象:熟悉knn、了解opencv和python。 1.knn理論介紹:算法學習筆記:knn理論介紹 2. opencv中knn函數 路徑:opencv\sources\modules\ml\include\opencv2\ml\ml.hpp 3.案例 3.1數據集介紹 我們的目的是創建一個可以對手寫數字進行…

如何遠程管理Quartz

選項1:JMX 許多人問他們是否可以通過JMX管理Quartz,但我不確定為什么Quartz doc甚至不會提及它。 是的,您可以使用quartz.properties的以下命令啟用石英中的JMX org.quartz.scheduler.jmx.export true之后,您可以使用標準的JMX客…

熱啟動必須聯網嗎_供暖結束,地暖是關閉供水閥門還是關閉回水閥門?你做對了嗎?...

天氣漸漸暖和起來很多城市都停止供暖了一些家庭也停止使用地暖那么今天就來聊一聊,停止供暖后地暖系統應該怎么保養地暖不用時候是關閉供水閥門還是關閉回水閥門?供暖結束 暖氣閥門到底要不要關一般來說,我們供暖期結束是不用關閉總閥門的。因…

python學習(九) 網絡編程學習--簡易網站服務器

python 網絡編程和其他語言都是一樣的,服務器這塊步驟為:1. 創建套接字2. 綁定地址3. 監聽該描述符的所有請求4. 有新的請求到了調用accept處理請求 Python Web服務器網關接口(Python Web Server Gateway Interface,簡稱“WSGI”&…

concurrency 方面的books

http://joeduffyblog.com/2016/11/30/15-years-of-concurrency/轉載于:https://www.cnblogs.com/WCFGROUP/p/6566150.html

Spring 3.1緩存和配置

我最近在博客中談論有關Spring 3.1及其新的緩存注釋Cacheable和CacheEvict 。 與所有Spring功能一樣,您需要進行一定數量的設置,并且通常使用Spring的XML配置文件來完成。 在緩存的情況下,打開Cacheable和CacheEvict并不容易,因為…

按條件分類_保稅倉儲企業能否同時存儲非保貨物?“倉儲貨物安裝臺分類監管”如何申請?...

保稅倉儲企業能否同時存儲非保貨物呢?保稅和非保貨物是不是真的不能同在一個“屋檐下”呢?哪些企業可以開展“倉儲貨物按狀態分類監管”業務?企業又該如何申請該項業務?本文就對這些問題進行一下梳理。什么是“倉儲貨物按狀態分類…

ZooKeeper的原理(轉)

一、ZooKeeper的角色 領導者(Leader),負責進行投票的發起和決議,更新系統狀態。 學習者(Learner),包括跟隨者(Follower)和觀察者(Observer)&#…

java課堂筆記

轉載于:https://www.cnblogs.com/16-C-kai/p/6567042.html

Spring– DAO和服務層

歡迎來到Spring教程的第三部分。 在這一部分中,我們將繼續編寫Timesheet應用程序,這次我們將實現DAO層,業務服務并編寫一些測試。 在上一部分中,我們定義了GenericDao接口,該接口告訴我們需要對實體執行哪些操作。 現在…

51nod 1907(多項式乘法啟發式合并)

題目: 分析: 對于一個確定的生成子圖,很明顯是在一個連通塊上走,走完了再跳到另一個連通塊上,假設連通塊個數為cnt,那么答案一定是$min(a_{cnt-1},a_cnt,..,a_{n-1})$ 那現在的問題就是如何求出對于原圖而言…

煮飯的機器人作文_公示|“筆隨我心、心由筆動”作文大賽獲獎名單

卡士大昌杯“筆隨我心、心由筆動”獲獎作品開平的咸湯圓滑輪記/我的宅家成長記折疊式小屋/夕陽/包粽子在過去的卡士大昌杯“筆隨我心、心由筆動”作文活動中我們收到了許多優秀投稿經過專業團隊評選得出獲獎選手作品如下主辦方協辦方一等獎《…

BZOJ 4491: 我也不知道題目名字是什么

4491: 我也不知道題目名字是什么 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 278 Solved: 154[Submit][Status][Discuss]Description 給定一個序列A[i],每次詢問l,r,求[l,r]內最長子串,使得該子串為不上升子串或不下降子串 Input 第一…

Spring-boot中讀取config配置文件的兩種方式

了解過spring-Boot這個技術的,應該知道Spring-Boot的核心配置文件application.properties,當然也可以通過注解自定義配置文件的信息。 Spring-Boot讀取配置文件的方式: 一.讀取核心配置文件信息application.properties的內容 核心配置文件是指…

JavaFX 2 GameTutorial第5部分

介紹 這是與JavaFX 2 Game Tutorial相關的六部分系列的第五部分。 我知道自從我寫關于游戲的博客以來已經很長時間了,但希望您仍然與我在一起。 如果您想回顧一下,請閱讀第1部分 , 第2 部分 , 第3 部分和第4 部分 ,以了…