# 用python尝试做游戏(三)

用python尝试做游戏(三)

emmm 为啥上一个没搞完呢 算了 不解释
简述 从图书馆逮了本书 感觉有些东西 就是比如说自己搞数据存储,设计格式啥的,还是得先瞄瞄有点啥


本次解决的问题:鼠标在窗口上移动的坐标,可以时时自动刷新,在界面上显示!


一、python3.8 从入门到精通(清华大学出版社)

随便找了一本,里面除了之前看到的GUI、sql、爬虫啥的都有点,反正参考一下,哦对,有个弹球游戏例子,我估计有碰撞什么的、重力什么的,还有数字显示,所以觉得应该还行,就拿上了。反正我觉得会用的都会记下来。

#列表
a = []
#元组
b = (100,)
#这个好玩,元组可以删不可以改,换句话说,大家都用过比如八门神器、金山游侠,不可改,哈哈哈哈,那么好了,一些数据,更新上就可以你懂,原数组加个数,把前一项删了那种。
c = (200,)
b = b+c
b = b[1]
print(b)

在这里插入图片描述

数据输入
因为input是输入字符串,所以得强制转换,如果要计数

a = int (input("输入:"))

二、GUI编程里的鼠标事件

import tkinter as tk  # 使用Tkinter前需要先导入

#鼠标进入窗体的事件
def hEnter(event):
    label1["text"] = "enter the frame"
    label2["text"] = ""
    label3["text"] = ""

#鼠标离开窗体的事件
def hLeave(event):
    label1["text"] = "lieave the frame"
    label2["text"] = ""
    label3["text"] = ""

#鼠标在窗体内单击左键
def hLbuttonPress(event):
    print(str(event.x))
    a  =  "press the left button"
    label1["text"] = a
    label2["text"] = "x="+str(event.x)
    label3["text"] = "y="+str(event.y)


#鼠标在窗体内按住左键移动
def hLbuttinMove(event):
    label1["text"] = "moving the left button pressed"
    label2["text"] = "x="+str(event.x)
    label3["text"] = "y="+str(event.y)

#鼠标在窗体内放开左键
def hLbuttinRelease(event):
    label1["text"] = "release the left button"
    label2["text"] = "x="+str(event.x)
    label3["text"] = "y="+str(event.y)


# 第1步,实例化object,建立窗口window
window = tk.Tk()
 
# 第2步,给窗口的可视化起名字
window.title('My Window')

def get_screen_size(win):
    return win.winfo_screenwidth(),win.winfo_screenheight()
def center_window(window, width, height):
    screenwidth = window.winfo_screenwidth()
    screenheight = window.winfo_screenheight()
    size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2)
    window.geometry(size)

center_window(window, 500, 200)

window.bind("<Enter>",hEnter)
window.bind("<Leave>",hLeave)
window.bind("<Button-1>",hLbuttonPress)
window.bind("<B1-Motion>",hLbuttinMove)
window.bind("<ButtonRelease-1>",hLbuttinRelease)


label1 = tk.Label(window,text = "no" )
label1.grid(row=0,column=0)
label2 = tk.Label(window,text = "x =")
label2.grid(row=1,column=0)
label3 = tk.Label(window,text = "y =")
label3.grid(row=2,column=0)


# 第7步,主窗口循环显示
window.mainloop()

在这里插入图片描述

非常重要!!!!!!

解决错误TypeError: ‘NoneType’ object does not support item assignment(tkinter 定义控件之后再次修改控件的属性)

如果代码写成

label3 = tk.Label(window,text = "y =").label3.grid(row=2,column=0)

即定义组件和位置一起写,那么会报错,上述TypeError: ‘NoneType’ object does not support item assignment。
解决方案,分开写。

label3 = tk.Label(window,text = "y =")
label3.grid(row=2,column=0)

(解决问题的来自https://blog.csdn.net/qq_40600539/article/details/83350756)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值