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