IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python arcade库教程(2) -> 正文阅读

[Python知识库]python arcade库教程(2)

上次说了窗口的创建和框架创建的区别、on_draw方法、on_update方法和鼠标按下松开时调用的on_mouse_release,on_mouse_press。

本篇文章就再次讲解arcade库Window类里的方法。

对了,有一个事情上篇文章忘说了,在把窗口实例化的时候,可以填3个属性,分别是此窗口的宽度(x值)、长度(y值)和标题,窗口默认大小是800*600,默认的标题是‘arcade window’,这个上篇文章仔细的小伙伴应该看出来了。

还是一样编写一个程序来看一下

#导入库中大部分功能
from arcade import *
#子类继承父类Window
class MyWindow(Window):
    pass
#类的实例化,窗口长度400宽度1000,标题为‘随便一个标题’
w = MyWindow(1000,400,'随便一个标题')
 
#运行
run()

运行之后出现的窗口明显比之前的窗口更加扁一些,在此窗口中看到的图片大小肯定不是1000*400,但是把图片保存下来之后就可以看到它的大小了,仍然不是1000*400,因为要算上边框。

?好了话题有点偏了,我们进入今天的内容

接着上篇的,我们先讲鼠标的方法。

on_mouse_motion(self,x,y,dx,dy)

这个方法相信大家都能看出来,是在鼠标移动时自动按当前程序帧率执行。和其它的鼠标方法一样,前面的x,y是指当前鼠标的坐标,后面的是这个函数的“专属”参数

这个函数的“专属”参数dx和dy分别指鼠标在上一帧在x方向和y方向移动的值

dx>0,鼠标向右运动,dx<0,鼠标向左运动,dy<0,鼠标向下,反之则向上。

编写一个程序来具体的看一下。

#导入库中大部分功能
from arcade import *
#子类继承父类Window
class MyWindow(Window):
    #鼠标移动时自动执行 
    def on_mouse_motion(self,x,y,dx,dy):
        #打印获得的参数
        print(f'当前鼠标坐标:{x},{y},鼠标在当前帧运动了x:{dx}y:{dy}')
#类的实例化
w = MyWindow()
 
#运行
run()

运行之后,小编随便在窗口中挥动了几下鼠标,可以看到打印了很多的值,这些值分别代表了什么大家应该都知道,这里就不再赘述。

细心的小伙伴可能会注意到:为什么坐标没有负值?

这就要看它用的坐标系了,arcade库用的坐标系是以左下角为原点,而我们常见的坐标系是笛卡尔坐标系,以中心点为原点。

好了,我们进行到下一个函数。

on_mouse_drag(x,y,dx,dy,button,mod)

这个函数和on_mouse_motion有点像,前面四个参数是完全一样的,但是却有着on_mouse_press的button和mod参数。没错,它就是在拖动鼠标时自动调用的函数。

里面的参数都讲过,就不凑长度了。没看上篇文章讲的on_mouse_press的朋友,往期入口在这里

照例编写一个程序。

#导入库中大部分功能
from arcade import *
#子类继承父类Window
class MyWindow(Window):
    #鼠标拖动时自动执行 
    def on_mouse_drag(self,x,y,dx,dy,button,mod):
        #打印获得的参数
        if button==1:
            print(f'当前鼠标坐标:{x},{y},鼠标在当前帧运动了x:{dx}y:{dy},按下了左键')
        if button==2:
            print(f'当前鼠标坐标:{x},{y},鼠标在当前帧运动了x:{dx}y:{dy},按下了中键')
        if button==4:
            print(f'当前鼠标坐标:{x},{y},鼠标在当前帧运动了x:{dx}y:{dy},按下了右键')
#类的实例化
w = MyWindow()
 
#运行
run()

运行之后,小编分别按下左、中、右键拖动了鼠标,输出内容如下:

?好了,来到第三个方法,也是鼠标的最后一个方法

on_mouse_scroll(x,y,dx,dy)

这个参数。。很眼熟对不对?

arcade的作者跑路了?

当然不可能了!

这个方法在鼠标滚动时自动调用,前两个参数是鼠标的坐标,dx和dy分别代表了鼠标横向滚动和竖向滚动的值

当然啦,dx是专为有横着的滚轮的特殊鼠标准备的,dy才是给普通鼠标准备的。

dy>0,鼠标向上滚动,反之则向下,dx>0,鼠标向右滚动,反之向左

编写程序看一下


#导入库中大部分功能
from arcade import *
#子类继承父类Window
class MyWindow(Window):
    #鼠标拖动时自动执行 
    def on_mouse_scroll(self,x,y,dx,dy):
        #打印获得的参数
        if dy>0:
            print(f'当前鼠标坐标:{x},{y},鼠标向上滚动了')
            
        if dy<0:
            print(f'当前鼠标坐标:{x},{y},鼠标向下滚动了')
#类的实例化
w = MyWindow()
 
#运行
run()

因为小编的鼠标没有横向滚轮,就没有编写横向滚轮的内容。

运行程序后,小编先后向上和向下滚动了滚轮,输出结果如下。

好了,鼠标的内容就到此结束了

接下来看下键盘上的内容

on_key_press(button,mod)

on_key_release(button,mod)

两个函数也是非常相似,就放在一起讲。

前者是在键盘按键按下时调用,后者是松开时调用。

参数也是一样的,button代表的是按键,mod是辅助键。

button的值用ascii码表示

这里就再往外扯一下,跟大家讲一下ascii码。

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

这是来自百度百科的回答,翻译成人话来讲呢,就是说ascii是一种国际通用的在计算机上表示电脑键盘上的字符的编码系统。知道就可以了。

这里给到大家一张ascii码的对照图

如果你不想每次都用晦涩难懂的ascii码,arcade库有一个key类,可以代替ascii,只不过要另外导入,也就是要在前面加上一行

from arcade import key

还是编写。。。两个程序

分别为ascii码的和arcade自带的key的

因为电脑上。。。按键实在太多了就只编写一个按键,需要的话就复制粘贴再改一改就可以了。

?使用arcade.key:

#导入库中大部分功能
from arcade import *
from arcade import key
#子类继承父类Window
class MyWindow(Window):
    #按下键盘时调用
    def on_key_press(self,button,mod):
        if button==key.KEY_1:
            print('按下了按键‘1’')
    #松开键盘时调用
    def on_key_release(self,button,mod):
        if button==key.KEY_1:
            print('松开了按键‘1’')
#类的实例化
w = MyWindow()
 
#运行
run()

使用ascii码:

#导入库中大部分功能
from arcade import *
#子类继承父类Window
class MyWindow(Window):
    #按下键盘时调用
    def on_key_press(self,button,mod):
        if button==49:
            print('按下了按键‘1’')
    #松开键盘时调用
    def on_key_release(self,button,mod):
        if button==49:
            print('松开了按键‘1’')
#类的实例化
w = MyWindow()
 
#运行
run()

运行的输出时一样的,小编按了几次‘1’键。

输出结果如下:

?好了,window类的教程就到这里,本篇文章也结束了,

参考资料:

文中关于ascii码的讲解来自https://baike.baidu.com/item/ASCII/309296?fr=aladdin

文中ascii码的对照图来自https://zhidao.baidu.com/question/1924451713468797027.html

其它的图片均来自海龟编辑器截图。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 23:57:56  更:2021-07-24 23:58:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 19:30:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码