<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 5.4.2 案例:圖形庫 graphics 如前所述,Tkinter 是 Python 語言的標準庫,可以利用 Tkinter 中的畫布構件來繪制圖形。 雖然利用 Tkinter 來進行圖形編程已經比較簡單、方便,但對初學者來說可能還是有點小麻 煩。例如,畫布甚至都沒有提供畫“點”的方法,初學者希望畫點時往往不知怎么辦。又如, 圓形一般都是通過圓心和半徑來定義的,但在畫布上畫圓形時必須利用界限框(外接正方形) 來定義。另外,對圖形的各種操作(如移動圖形、修改圖形的選項值等)都是通過調用畫布 的方法來執行的,而根據面向對象的思想,更容易理解的做法應該是直接針對圖形對象發出 操作請求。 由于上述理由,有人①在 Tkinter 之上寫了一個更容易使用的圖形庫——graphics。這個 圖形庫是為教學目的而開發的,它將 Tkinter 的繪圖功能以面向對象的方式重新包裝了一下, 使得初學者更容易學習和應用。使用 graphics 提供的功能實際上就是使用 Tkinter 的功能, 但使用者并不知道這一點,也不需要知道這一點,這就是層次體系結構帶來的效果。圖 5.23 顯示了 graphics 與 Tkinter 之間的關系,其中提到的 graphics 定義的各種圖形類將在稍后介 紹。 > ① Python Programming: An Introduction to Computer Science 的作者 John Zelle。 ![](https://box.kancloud.cn/2016-02-22_56cafce1ed3a6.png) 圖 5.23 在 Tkinter 之上開發的 graphics graphics 模塊和說明文檔可以從下列網站下載: [http://mcsp.wartburg.edu/zelle/python](http://mcsp.wartburg.edu/zelle/python) 下載后將 graphics.py 模塊與你的圖形程序放在一個目錄中,或者放在 Python 安裝目錄 中即可。下面我們簡要介紹如何使用 graphics 模塊。 首先,需要導入 graphics 模塊: ``` >>> from graphics import * ``` 其次,創建一個繪圖窗口: ``` >>> win = GraphWin("My Graphics Window",300,200) ``` 這條語句的含義是在屏幕上創建一個窗口對象,窗口標題為"My Graphics Window",寬 度為 300 像素,高度為 200 像素。三個參數都可以省略,缺省寬度和高度都是 200 像素。窗 口的坐標系仍然是我們熟悉的,即以窗口左上角為原點,x 軸向右,y 軸向下。 通過 Graphwin 類創建繪圖窗口的界面實際上是對底層 Tkinter 中創建畫布對象界面的重 新包裝,也就是說,當程序員利用 graphics 模塊創建繪圖窗口時,系統會把這個請求向下轉 達給 Tkinter 模塊,而 Tkinter 模塊就創建一個畫布對象并返回給上層的 graphics 模塊。這樣 做不是沒事找事多此一舉,而是為了改善圖形編程界面的易用性、易理解性。 接下去就可以在作圖窗口中繪制圖形了,稍后將介紹各種圖形對象的創建方法。程序結 束后應該關閉圖形窗口,為此只需向窗口對象發如下消息即可: ``` >>> win.close() ``` 下面介紹 graphics 模塊支持的各種圖形對象的用法。演示代碼中總是假定已經導入了 graphics 模塊并創建了繪圖窗口 win。 點 graphics 模塊提供了類型 Point 用于在窗口中畫點。創建點對象的語句模式為: ``` >>> p = Point(<x 坐標>,<y 坐標>) ``` 下面通過一個交互過程來在窗口中創建 Point 對象,并演示 Point 對象的方法的使用。 ``` >>> p = Point(100,80) >>> p.draw(win) >>> print p.getX(),p.getY() 100 80 >>> p.move(20,30) >>> print p.getX(),p.getY() 120 110 ``` 第一條語句創建了一個 Point 對象,該點的坐標為(100,80),變量 p 被賦值為該對象。 這時在窗口中并沒有顯示這個點,因為還需要讓這個點在窗口中畫出來,為此只需向對象 p 發送消息 draw(),這就是第二條語句的目的,其意為“請求對象 p 執行 draw(win)方法, 即在窗口 win 中將自己畫出來”。第三條語句演示了 Point 對象的另兩個方法 getX()和 getY()的使用,分別是獲得點的 x 坐標和 y 坐標。第四條語句的含義是請求 Point 對象 p 改變位置,向 x 方向移動 20 像素,向 y 方向移動 30 像素。 此外,Point 對象還提供以下方法: + p.setFill():設置點 p 的顏色。 + p.setOutline:設置輪廓線的顏色。對 Point 來說,與 setFill 沒有區別。 + p.undraw():隱藏對象 p,即在窗口中變成不可見的。注意,隱藏并非刪除,對象 p 仍然存在,隨時可以重新執行 draw()。 + p.clone():復制。復制一個與 p 一模一樣的對象。 讀者一定會覺得通過 Point 類來畫點非常容易,但也會奇怪:graphics 是建立在 Tkinter 之上的一層軟件,graphics 的所有功能都是依賴于 Tkinter 的功能實現的,但是 Tkinter 中并未提供畫點功能啊。對這個疑問的解答很簡單:Point 對象其實是 Tkinter 中的一個很小的矩 形(參見圖 5.23)!這是通過層次化改善圖形編程界面的一個典型例子——當我們要畫點時, 就直接創建 Point 對象,而不是像在 Tkinter 中那樣很別扭地創建一個矩形。 接下去介紹的其他圖形對象就不再像 Point 這樣詳細解釋并演示用法了,希望使用 graphics 模塊的讀者可以自行練習。 直線 直線類型為 Line,創建直線對象的語句模式為: ``` >>> line = Line(&lt;端點 1&gt;,&lt;端點 2&gt;) ``` 其中兩個端點都是 Point 對象。 和 Point 一樣,Line 對象也支持 draw()、undraw()、move()、setFill()、setOutline()、clone()等方法。此外,Line 對象還支持 setArrow()方法,用于為直線畫箭頭。 圓形 圓形類型為 Circle,創建圓形對象的語句模式為: ``` >>> c = Circle(&lt;圓心&gt;,&lt;半徑&gt;) ``` 其中圓心是 Point 對象,半徑是個數值。 Circle 對象同樣支持 draw()、undraw()、move()、setFill()、setOutline()、clone()等方法。此外,Circle 對象還支持 c.getRadius()方法,用于獲取圓形對象 c的半徑。 橢圓 橢圓類型為 Oval,創建橢圓對象的語句模式為: ``` >>> o = Oval(&lt;左上角&gt;,&lt;右下角&gt;) ``` 其中左上角和右下角是兩個 Point 對象,用于指定一個矩形,再由這個矩形定義一個內接橢圓。 橢圓對象同樣支持 draw()、undraw()、move()、setFill()、setOutline()、 clone()等方法。 矩形 矩形類型為 Rectangle,創建矩形對象的語句模式為: ``` >>> r = Rectangle(&lt;左上角&gt;,&lt;右下角&gt;) ``` 其中左上角和右下角是兩個 Point 對象,用于指定矩形。 矩形對象同樣支持 draw()、undraw()、move()、setFill()、setOutline()、clone() 等方法。此外,矩形還支持的方法包括 r.getP1() 、 r.getP2() 和 r.getCenter(),分別用于獲取左上角、右下角和中心,返回值都是 Point 對象。 多邊形 多邊形類型為 Polygon,創建多邊形對象的語句模式為: ``` >>> poly = Polygon(&lt;頂點 1&gt;,..., &lt;頂點 n&gt;) ``` 將各頂點用直線相連,即成多邊形。 矩形對象同樣支持 draw()、undraw()、move()、setFill()、setOutline()、 clone()等方法。此外還支持方法 poly.getPoints(),用于獲取多邊形的各個頂點。 文本 文本類型為 Text,創建文本對象的語句模式為: ``` >>> t = Text(&lt;中心點&gt;,&lt;字符串&gt;) ``` 其中,中心點是個 Point 對象,字符串是顯示的文本內容。 文本對象支持 draw()、undraw()、move()、setFill()、setOutline()、clone()等方法,其中 setFill()和 setOutline()方法都是設置文本的顏色。文本對象還支持方法 t.setText(&lt;新字符串&gt;)用于改變文本內容,方法 t.getText()用于獲取文本內容,方法 t.setTextColor()用于設置文本顏色。
                  <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>

                              哎呀哎呀视频在线观看