1. 程式人生 > >【零基礎入門學習Python筆記017】GUI的最終選擇:Tkinter

【零基礎入門學習Python筆記017】GUI的最終選擇:Tkinter

1.Canvas元件    1.1 在Canvas元件上繪製物件,可以用create_xxx()的方法(xxx表示物件型別,例如直線line,矩形rectangle和文字text等)
from tkinter import *

# 建立主視窗
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()

# 畫一條黃色的橫線
w.create_line(0, 50, 200, 50, fill="yellow")
# 畫一條紅色的豎線(虛線)
w.create_line(100, 0, 100, 100, fill="red", dash=(4, 4))
# 中間畫一個藍色的矩形
w.create_rectangle(50
, 25, 150, 75, fill
="blue") mainloop()
執行結果顯示:  1.2 新增到Canvas上的物件會一直保留著。如果希望修改他們,可以使用coords(),itemconfig()和move()方法來移動畫布上的物件,或者delete()方法來刪除:from tkinter import * # 建立主視窗 root = Tk() w = Canvas(root, width=200, height=100) w.pack() # 畫一條黃色的橫線 line1 = w.create_line(0, 50, 200, 50, fill="yellow") # 畫一條紅色的豎線(虛線)
line2 = w.create_line(100, 0, 100, 100, fill="red", dash=(4, 4)) # 中間畫一個藍色的矩形 rect1 = w.create_rectangle(50, 25, 150, 75, fill="blue") # 黃橫線上移 w.coords(line1, 0, 25, 200, 25) # 矩形框被紅色填充 w.itemconfig(rect1, fill="red") # 刪除了紅色虛豎線 w.delete(line2)
Button(root, text="刪除全部", command=(lambda x=ALL: w.delete(x))).pack()
mainloop()執行結果顯示:點選刪除按鈕:1.3 還可以在Canvas上顯示文字,使用的是create_text()方法:
from tkinter import *

# 建立主視窗
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()

w.create_line(0, 0, 200, 100, fill="green", width=3)

w.create_line(200, 0, 0, 100, fill="green", width=3)
# 中間畫一個藍色的矩形
w.create_rectangle(40, 20, 160, 80, fill="green")
w.create_rectangle(65, 35, 135, 65, fill="yellow")
w.create_text(100, 50, text="FishC")

mainloop()
執行結果顯示:1.4 使用creater_oval()方法繪製橢圓形(或圓形),引數是指定的一個限定的矩形(Tkinter會自動在這個矩形內繪製一個橢圓):
from tkinter import *

# 建立主視窗
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()

w.create_rectangle(40, 20, 160, 80, dash=(4, 4))
w.create_oval(40, 20, 160, 80, fill="pink")
w.create_text(100, 50, text="FishC")

mainloop()
執行結果:1.5 繪製多邊形,可以使用create_polygon()方法。示例畫一個五角星:
from tkinter import *
import math as m

# 建立主視窗
root = Tk()
w = Canvas(root, width=200, height=100, background="red")
w.pack()

# 中心點座標
center_x = 100
center_y = 50
# 半徑長度
r = 50
points = [
    # 左上點
    center_x - int(r * m.sin(2 * m.pi / 5)),
    center_y - int(r * m.cos(2 * m.pi / 5)),
    # 右上點
    center_x + int(r * m.sin(2 * m.pi / 5)),
    center_y - int(r * m.cos(2 * m.pi / 5)),
    # 左下點
    center_x - int(r * m.sin(m.pi / 5)),
    center_y + int(r * m.cos(m.pi / 5)),
    # 頂點
    center_x,
    center_y-r,
    # 右下點
    center_x + int(r * m.sin(m.pi / 5)),
    center_y + int(r * m.cos(m.pi / 5)),
    ]
w.create_polygon(points, outline="green", fill="yellow")

mainloop()
執行結果:
設計一個像window畫圖工具那樣的面板,讓使用者可以在上面隨心所欲地繪畫。其實原理很簡單,就是獲取使用者拖動滑鼠的座標,然後每個座標對應繪製一個點上去就好了。在這裡,不得不承認有點遺憾讓人的是TKINTER並每天沒有“點”的方法。其實:可以通過繪製一個超小的橢圓形來表示同一個點。在下面的例子裡,通過相應“滑鼠左鍵按住拖動”事件(<B1-Motion>),在滑鼠拖動的同時獲取滑鼠的實時位置(x, y),並繪製一個超小的橢圓代表一個”點“:
from tkinter import *
import math as m

# 建立主視窗
root = Tk()
w = Canvas(root, width=400, height=200)
w.pack()

def paint(event):
    x1, y1 = (event.x - 1), (event.y - 1)
    x2, y2 = (event.x + 1), (event.y + 1)
    w.create_oval(x1, y1, x2, y2, fill="red")

w.bind("<B1 - Motion>", paint)
Label(root, text="按住滑鼠左鍵並移動,開始繪製你的理想藍圖吧...").pack()

mainloop()
執行結果:

相關推薦

基礎入門學習Python筆記017GUI最終選擇Tkinter

1.Canvas元件    1.1 在Canvas元件上繪製物件,可以用create_xxx()的方法(xxx表示物件型別,例如直線line,矩形rectangle和文字text等)from tkinter import * # 建立主視窗 root = Tk() w =

基礎入門學習Python筆記006Python之常用操作符

算術操作符 +、-、*、/、%、**、// //是d版除號(Python3與Python2的不同之處,本文主要以Python3為主,因為個人認為這也是以後發展的方向,並且本人沒有學習過Python2系

基礎入門學習Python筆記005閒聊之Python的資料型別

1.Python的一些數字型別 整型、浮點型、e記憶法、布林型別 有小數點的事整型;沒有小數點的是浮點型;e記憶法就是科學計數法,一般用於比較大的或者比較小的數;布林型別就是一種特殊的整數型,Ture

基礎入門學習Python001我和Python的第一次親密接觸

課後作業 測試題: 0. Python 是什麼型別的語言? 答:python是指令碼語言(Scripting language)。 指令碼語言是電腦程式語言,因此也能讓開發者藉以編寫出讓電腦聽命行事的程式。以簡單的方式快速完成某些複雜的事情通常是創造指令碼語言的重要

基礎入門學習Python》(23)--遞迴這幫小兔崽子

前言 我們接下來吧遞迴的用法再熟練一點,大家都知道斐波那契數列吧,以下我們以實際的兔子繁殖的例子來編寫一個關於斐波那契數列的遞迴函式 知識點 我們都知道兔子繁殖能力是驚人的,如下圖:  我們可以用數學函式來定義:  迭代實現 def

基礎入門學習Python》(24)--遞迴漢諾塔

前言 這節課主要講解用遞迴的方法,實現漢諾塔的解答  知識點 這節課主要講解用遞迴的方法,實現漢諾塔的解答  對於遊戲的玩法,我們可以簡單分解為三個步驟: 1) 將前63個盤子從X移動到Y上。  2) 將最底下的第64個盤子從X移動

基礎入門學習Python》(43)魔法方法算術運算(2)

前言: 上節課我們介紹了很多關於計算的魔法方法,當你的物件進行了相關的算術操作的時候,自然而然就會觸發相應的魔法方法,一旦你重寫了這些魔法方法,那麼Python就會根據你的意圖進行計算。 通過對相關的魔法方法進行重寫,可以讓Python根據你的意圖執行程式。 這裡我們就讓加變成減 &

小甲魚的《基礎入門學習Python》[課後作業] 第001講我和Python的第一次親密接觸 | 課後測試題及答案

以下內容均來自網上,我就是自己看的時候好看放上來了的。 0. Python 是什麼型別的語言? Python是指令碼語言   指令碼語言(Scripting language)是電腦程式語言,因此也能讓開發者藉以編寫出讓電腦聽命行事的程式。以簡單的方式快速完成某些複雜的事

小甲魚的《基礎入門學習Python》[課後作業] 第002講Python設計第一個遊戲 | 課後測試題及答案

0. 什麼是BIF?BIF 就是 Built-in Functions,內建函式。為了方便程式設計師快速編寫指令碼程式(指令碼就是要程式設計速度快快快!!!),Python 提供了非常豐富的內建函式,我們只需要直接呼叫即可,例如 print() 的功能是“列印到螢幕”,inp

基礎入門學習Python》(13)--元組戴上了枷鎖的列表

前言 這節課我們討論主題是元祖:我們有個小標題戴上了枷鎖的列表 列表同志真是千古功名一聚塵吶。自從列表同志被抓了後,Python的作者感覺有點大事不妙了。可能列表給的權利太大了。 我們應該做一些限制,所以呢,Python的作者就Python社群的小夥伴們,推出了我們今天

017函式 - Python的樂高積木 | 學習記錄(小甲魚基礎入門學習Python

(標答出處: 魚C論壇) 《零基礎入門學習Python》 測試題: 你有聽說過DRY嗎? DRY(Don’t repeat yourself),進行程式設計時相同的程式碼不要重複寫,最好只寫一次,然後可以在其他地方直接引用。 都是重複一段程式碼,為什麼我要使用函式

基礎入門學習Python學習筆記之第二十七講

學習筆記之第二十七講 測試題: 請問集合的唯一作用是什麼呢? 答:確保裡面元素的唯一性。 如果你希望建立的集合是不變的,應該怎麼做? 答:用frozenset()函式將集合冷凍 請問如何確定一個集合裡邊有多少個元素? 答:使用len(set) 請

學習筆記基礎入門學習Python》(小甲蟲)

                 學習筆記:《零基礎入門學習Python》(小甲蟲) 0前言    

魚C工作室《基礎入門學習Python學習過程筆記記錄第一天 001-010

魚C工作室練習題從第四節開始就要收費.. 習題在百度文庫的連結如下:https://wenku.baidu.com/view/e6b8c88ecc175527072208d7.html?re=view

基礎入門學習python[小甲魚]--就這麽愉快地開始吧01

inf 基礎 tro str 利用 build ice size 輸入 1. 從IDIE啟動python IDLE是一個python shell,shell的意思就是“外殼”,從基本上說,就是一個通過輸入本與程序交互的途徑。像windows的cmd的窗口,像

基礎入門學習Python》(11)--列表一個打了激素的陣列(二)

前言 上節課我們介紹一個打了激素的陣列,叫做列表。列表我們比作一個大倉庫,你所能夠具現化的東西,都可以往裡面扔,它包羅永珍。另外還介紹了三個往列表新增元素的方法,分別是: append(),extend(),insert() append()和extend()這兩個方法都只有1個引數:

基礎入門學習Python》(10)--列表一個打了激素的陣列(一)

  前言 有時候我們需要把一些東西暫時儲存起來,因為他們有著一些直接或間接的聯絡,我們需要把它們放在某個組或者集合中,未來可能用得上。 很多接觸過程式設計的朋友都知道,都接觸過陣列這個概念,那麼陣列這個概念事實上很簡單,把一大堆同總型別資料挨個擺在一塊,然後通過陣列的下標進行索

基礎入門學習Python》(12)--列表一個打了激素的陣列(三)

前言 這節課我們繼續談一下Python列表一些知識(其中包括比較操作符,邏輯操作符,連線操作符,重複操作符,成員關係操作符,還有一些其他關於列表的方法) 視訊中的0知識點 Python常用操作符 比較操作符 ​ >>> list1 = [123] >&g

基礎入門學習Python》(19)--函式我的地盤聽我的

前言 接下來仔細講講函式與過程和區域性變數和全域性變數的作用範圍 知識點 函式與過程 在許多程式語言中,函式(function)是有返回值的,過程(procedure)是簡單、特殊並且沒有返回值的。而在Python中,嚴格來說只有函式沒有過程。  例如:

基礎入門學習Python》(18)--函式靈活即強大

前言 上一節課我們基本介紹Python函式的用法,這一節課我們主要針對函式的引數進行進一步的深入學習。 知識點 形參(parameter)和實參(argument) >>> def MyFirstFunction(name): '函式定義過程中的n