Python GUI tkinter库 自学15
程序员文章站
2022-04-27 19:51:32
...
place 布局扑克游戏界面 增加事件操作
1、一个经典的面向程序写法模块
from tkinter import *
from tkinter import messagebox
# 导入库文件
class Appication(Frame):
"""
一个经典的 GUI 类的写法
"""
# 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
def __init__(self, master = None):
# 定义构造函数、并初始化父类为空
super().__init__(master)
# 通过 super() 调用父类、并将 master 传进去
self.master = master
# 令此类中的 master 等于传入的 window
self.pack()
# 布局此窗口
self.CreateWidget()
# 调用另一个函数 CreateWidget
def CreateWidget(self):
"""
用途:通过 Place 布局管理器实现扑克牌位置控制
"""
......
......
if __name__ == "__main__":
window = Tk()
# 创建主窗口
window.geometry("570x200+200+200")
window.title('扑克牌界面')
# 对窗口进行大小、位置及名字设置
app = Appication(master = window)
# 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去
window.mainloop()
# 调用 mainloop 方法、启用窗口并进入事件循环
2、布局管理器代码(place)
# class Appication(Frame):
# """
# 一个经典的 GUI 类的写法
# """
def CreateWidget(self):
"""
用途:通过 Place 布局管理器实现扑克牌位置控制
"""
# 让一张扑克牌出现在窗口处
# self.photo = PhotoImage(file = "image\\puke1.gif")
# self.pukes = Label(self.master, image = self.photo)
# 此处注意第一个参数是 window 或 self.master
# self.pukes.place(x = 10, y = 50)
# 让序号为 A~10 的扑克牌出现在窗口处
self.photos = [PhotoImage(file = "image\\puke"+str(i + 1)+".gif") for i in range(10)]
# 此处的 "+str(i + 1)+" 应当注意
self.pukes = [Label(self.master, image = self.photos[i]) for i in range(10)]
for i in range(10):
self.pukes[i].place(x = 10 + i * 40, y = 50)
# 为所有的 Lable 增加事件处理
self.pukes[0].bind_class("Label", "<Button-1>", self.chupai)
3、事件操作模块
# class Appication(Frame):
# """
# 一个经典的 GUI 类的写法
# """
def chupai(self, event):
print(event.widget.winfo_geometry())
print(event.widget.winfo_x())
if event.widget.winfo_y() == 30:
event.widget.place(y = 50)
if event.widget.winfo_y() == 50:
event.widget.place(y = 30)
4、源代码
from tkinter import *
from tkinter import messagebox
# 导入库文件
class Appication(Frame):
"""
一个经典的 GUI 类的写法
"""
# 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
def __init__(self, master = None):
# 定义构造函数、并初始化父类为空
super().__init__(master)
# 通过 super() 调用父类、并将 master 传进去
self.master = master
# 令此类中的 master 等于传入的 window
self.pack()
# 布局此窗口
self.CreateWidget()
# 调用另一个函数 CreateWidget
def CreateWidget(self):
"""
用途:通过 Place 布局管理器实现扑克牌位置控制
"""
# 让一张扑克牌出现在窗口处
# self.photo = PhotoImage(file = "image\\puke1.gif")
# self.pukes = Label(self.master, image = self.photo)
# 此处注意第一个参数是 window 或 self.master
# self.pukes.place(x = 10, y = 50)
# 让序号为 A~10 的扑克牌出现在窗口处
self.photos = [PhotoImage(file = "image\\puke"+str(i + 1)+".gif") for i in range(10)]
# 此处的 "+str(i + 1)+" 应当注意
self.pukes = [Label(self.master, image = self.photos[i]) for i in range(10)]
for i in range(10):
self.pukes[i].place(x = 10 + i * 40, y = 50)
# 为所有的 Lable 增加事件处理
self.pukes[0].bind_class("Label", "<Button-1>", self.chupai)
def chupai(self, event):
print(event.widget.winfo_geometry())
print(event.widget.winfo_x())
if event.widget.winfo_y() == 30:
event.widget.place(y = 50)
if event.widget.winfo_y() == 50:
event.widget.place(y = 30)
if __name__ == "__main__":
window = Tk()
# 创建主窗口
window.geometry("570x200+200+200")
window.title('扑克牌界面')
# 对窗口进行大小、位置及名字设置
app = Appication(master = window)
# 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去
window.mainloop()
# 调用 mainloop 方法、启用窗口并进入事件循环
上一篇: 这么大的官?他会是谁呢?你一定猜不出来!
下一篇: C知识点 大考验 你知道几条?
推荐阅读
-
NO.5:自学python之路------标准库,正则表达式
-
Python使用tkinter库实现文本显示用户输入功能示例
-
python自学 (四)第四章 操作数据库 【数据编程接口、使用SQLite】
-
python库的tkinter带你进入GUI世界(计算器简单功能)
-
python基于Tkinter库实现简单文本编辑器实例
-
Python Tkinter GUI编程入门介绍
-
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
-
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
-
python 8种必备的gui库
-
Python Tkinter 之Canvas控件(Python GUI 系列11)