亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python GUI實(shí)現(xiàn)小球滿屏亂跑效果

 更新時(shí)間:2019年05月09日 15:14:45   作者:x6_9x  
這篇文章主要為大家詳細(xì)介紹了python GUI實(shí)現(xiàn)小球滿屏亂跑效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python GUI實(shí)現(xiàn)小球滿屏亂跑效果的具體代碼,供大家參考,具體內(nèi)容如下

學(xué)習(xí)tkinter有一段時(shí)間了,綜合運(yùn)用一下,做一個(gè)類似屏保類的東西,碰到屏幕邊緣就反彈回來(lái)的那種。

初級(jí)篇:上下單向移動(dòng)

from tkinter import *
import random
import time
#
#創(chuàng)建一個(gè)類,這個(gè)類含有兩個(gè)參數(shù),一個(gè)是畫(huà)布,一個(gè)是球的顏色
#
class Ball:
 def __init__(self,canvas,color):
 self.canvas = canvas
 self.id = canvas.create_oval(10,10,25,25,fill=color)
 self.canvas.move(self.id,245,100)
 #來(lái)回反彈
 self.x = 0
 self.y = -1
 #winfo_height()函數(shù)來(lái)獲取畫(huà)布當(dāng)前的高度,賦值給對(duì)象變量
 self.canvas_height = self.canvas.winfo_height()
 def draw(self):
 self.canvas.move(self.id,self.x,self.y)
 #獲取某個(gè)對(duì)象在畫(huà)布的坐標(biāo),返回一個(gè)數(shù)組(兩個(gè)坐標(biāo),左上角的坐標(biāo)和右下角的兩個(gè)坐標(biāo))
 pos = self.canvas.coords(self.id)
 #打印獲取的坐標(biāo)
 print(pos)
 #如果最上面的縱軸坐標(biāo)在頂上,則往下移動(dòng)一個(gè)像素
 if pos[1] <= 0:
 self.y = 1
 #如果最下面的縱軸坐標(biāo)在底上,則向上移動(dòng)
 if pos[3] > self.canvas_height:
 self.y = -1


#創(chuàng)建畫(huà)布
tk = Tk()
tk.title("Game_ball")
tk.resizable(0,0)
tk.wm_attributes("-topmost",1)
#bd=0,highlightthickness=0 畫(huà)布之外沒(méi)有邊框
canvas = Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)
canvas.pack()
tk.update()

#創(chuàng)建對(duì)象 
ball = Ball(canvas,'red')

#一直保持循環(huán)
while 1:
 ball.draw()
 #快速刷新屏幕
 tk.update_idletasks()
 tk.update()
 time.sleep(0.01)

這個(gè)移動(dòng)的效果是上下移動(dòng)的。

進(jìn)階篇:隨機(jī)移動(dòng)

#########################
#上面的例子小球只能上下移動(dòng),這次改變下規(guī)則,使之能自由運(yùn)動(dòng),滿屏亂動(dòng),用random里面的洗牌函數(shù)
######################
from tkinter import *
import random
import time
#
#創(chuàng)建一個(gè)類,這個(gè)類含有兩個(gè)參數(shù),一個(gè)是畫(huà)布,一個(gè)是球的顏色
#
class Ball:
 def __init__(self,canvas,color):
 self.canvas = canvas
 self.id = canvas.create_oval(10,10,25,25,fill=color)
 self.canvas.move(self.id,245,100)
 #來(lái)回反彈
 #--self.x = 0
 #--self.y = -1
 starts = [-3,-2,-1,1,2,3]
 random.shuffle(starts)
 self.x = starts[0]
 self.y = -3
 #winfo_height()函數(shù)來(lái)獲取畫(huà)布當(dāng)前的高度,賦值給對(duì)象變量
 self.canvas_height = self.canvas.winfo_height()
 #獲取X軸坐標(biāo)
 self.canvas_width = self.canvas.winfo_width()
 def draw(self):
 self.canvas.move(self.id,self.x,self.y)
 #獲取某個(gè)對(duì)象在畫(huà)布的坐標(biāo),返回一個(gè)數(shù)組(兩個(gè)坐標(biāo),左上角的坐標(biāo)和右下角的兩個(gè)坐標(biāo))
 pos = self.canvas.coords(self.id)
 #打印獲取的坐標(biāo)
 print(pos)
 #如果最上面的縱軸坐標(biāo)在頂上,則往下移動(dòng)一個(gè)像素
 if pos[1] <= 0:
 self.y = 1
 #如果最下面的縱軸坐標(biāo)在底上,則向上移動(dòng)
 if pos[3] > self.canvas_height:
 self.y = -1
 #寬度控制#
 #如果在左邊框了,那么向右邊移動(dòng)3像素
 if pos[0] <= 0:
 self.x = 3
 #如果到右邊框了,左移動(dòng)3像素
 if pos[2] > self.canvas_width:
 self.x = -3


#創(chuàng)建畫(huà)布
tk = Tk()
tk.title("Game_ball")
tk.resizable(0,0)
tk.wm_attributes("-topmost",1)
#bd=0,highlightthickness=0 畫(huà)布之外沒(méi)有邊框
canvas = Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)
canvas.pack()
tk.update()

#創(chuàng)建對(duì)象 
ball = Ball(canvas,'red')

#一直保持循環(huán)
while 1:
 ball.draw()
 #快速刷新屏幕
 tk.update_idletasks()
 tk.update()
 time.sleep(0.01)

這個(gè)就達(dá)到了小球滿屏亂跑的效果。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python回溯算法實(shí)現(xiàn)全排列小練習(xí)分享

    python回溯算法實(shí)現(xiàn)全排列小練習(xí)分享

    這篇文章主要給大家分享的是python回溯算法實(shí)現(xiàn)全排列小練習(xí),文章根據(jù)例子:輸入列表L(不含重復(fù)元素),輸出L的全排列展開(kāi)學(xué)習(xí),需要的小伙伴可以參考一下
    2022-02-02
  • Python下簡(jiǎn)易的單例模式詳解

    Python下簡(jiǎn)易的單例模式詳解

    這篇文章主要介紹了Python下簡(jiǎn)易的單例模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python中yield的用法詳解

    python中yield的用法詳解

    這篇文章主要介紹了python中yield的用法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 基于pycharm導(dǎo)入模塊顯示不存在的解決方法

    基于pycharm導(dǎo)入模塊顯示不存在的解決方法

    今天小編就為大家分享一篇基于pycharm導(dǎo)入模塊顯示不存在的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python?Web?App開(kāi)發(fā)Dockerfiles編寫示例

    Python?Web?App開(kāi)發(fā)Dockerfiles編寫示例

    這篇文章主要為大家介紹了Python?Web?App編寫Dockerfiles的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python字符串詳細(xì)介紹

    Python字符串詳細(xì)介紹

    這篇文章主要介紹了Python字符串詳解,本文講解了字符串相關(guān)知識(shí)、字符串的一些特性、原始字符串、unicode字符串、字符串的常用操作方法、內(nèi)建函數(shù)列表等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Python調(diào)用shell cmd方法代碼示例解析

    Python調(diào)用shell cmd方法代碼示例解析

    這篇文章主要介紹了Python調(diào)用shell cmd方法代碼示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python流程控制常用工具詳解

    Python流程控制常用工具詳解

    這篇文章主要介紹了Python流程控制常用工具詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python去除拼音聲調(diào)字母,替換為字母的方法

    python去除拼音聲調(diào)字母,替換為字母的方法

    今天小編就為大家分享一篇python去除拼音聲調(diào)字母,替換為字母的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python操作PostgreSql數(shù)據(jù)庫(kù)的方法(基本的增刪改查)

    Python操作PostgreSql數(shù)據(jù)庫(kù)的方法(基本的增刪改查)

    這篇文章主要介紹了Python操作PostgreSql數(shù)據(jù)庫(kù)(基本的增刪改查),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論