当前位置: 首页 > news >正文

如何学做网站/域名查询ip爱站网

如何学做网站,域名查询ip爱站网,做网站能设置关键词在百度中搜索到,欧派整装大家居装修公司加盟一、提要 Tkinter是一个Python内置模块,它提供了一个简单易用的界面来创建GUI。 在实现一些动态的画面、如游戏还是需要一些创新性思维的。在本文中,我们将使用 Tkinter 探索 Python GUI 编程。我们将介绍 Tkinter 的基础知识,并演示如何使用…

一、提要

        Tkinter是一个Python内置模块,它提供了一个简单易用的界面来创建GUI。

        在实现一些动态的画面、如游戏还是需要一些创新性思维的。在本文中,我们将使用 Tkinter 探索 Python GUI 编程。我们将介绍 Tkinter 的基础知识,并演示如何使用 Tkinter 创建一个简单的 GUI 应用程序。

二、Tkinter的基础介绍

        Tkinter是一个Python内置模块,它提供了一个简单易用的界面来创建GUI。

        Tkinter 提供了一组可用于创建 GUI 的小部件。小部件是提供特定功能(如按钮、标签或输入字段)的图形元素。小部件可以排列在窗口中以创建 GUI。

创建 Tkinter GUI 的基本步骤是:

  1. 导入 Tkinter 模块
  2. 创建窗口
  3. 向窗口添加微件
  4. 配置微件
  5. 向微件添加功能
  6. 启动主事件循环

下面是使用 Tkinter 创建窗口的简单示例:

import tkinter as tkwindow = tk.Tk()
window.mainloop()

三、剪刀石头布游戏

        如果您想了解有关 Tkinter 的更多信息,我会在本文末尾放置一个链接。所以,我想和Tk一起做点什么。我最终做了石头剪刀布,我想和你分享。让我们看一下代码和结果。

        代码不长。它拥有这款游戏所需的所有东西。首先,我们制作可以玩游戏的屏幕。

# Import Required Library
from tkinter import *
import random# Create Object
root = Tk()# Set geometry
root.geometry("300x300")# Set title
root.title("Rock Paper Scissor Game")

        接下来,我为计算机分配值,因为在游戏过程中,您将与计算机竞争。

# Computer Value
computer_value = {"0": "Rock","1": "Paper","2": "Scissor"
}

        然后,我做了一些功能。根据玩家的选择,计算机或玩家获胜。因此,如果玩家选择石头,并且函数也选择石头,他们就会平局。当然,这也适用于剪刀对剪刀。如果你不知道这个游戏,中间有一个简短的解释:

  • 石头>剪刀
  • 剪刀>纸
  • >石头

这部分提供匹配结果。

# Reset The Game
def reset_game():b1["state"] = "active"b2["state"] = "active"b3["state"] = "active"l1.config(text="Player    ")l3.config(text="Computer")l4.config(text="")# Disable the Button
def button_disable():b1["state"] = "disable"b2["state"] = "disable"b3["state"] = "disable"# If player selected rock
def isrock():c_v = computer_value[str(random.randint(0, 2))]if c_v == "Rock":match_result = "Match Draw"elif c_v == "Scissor":match_result = "Player Win"else:match_result = "Computer Win"l4.config(text=match_result)l1.config(text="Rock   ")l3.config(text=c_v)button_disable()# If player selected paper
def ispaper():c_v = computer_value[str(random.randint(0, 2))]if c_v == "Paper":match_result = "Match Draw"elif c_v == "Scissor":match_result = "Computer Win"else:match_result = "Player Win"l4.config(text=match_result)l1.config(text="Paper   ")l3.config(text=c_v)button_disable()# If player selected scissor
def isscissor():c_v = computer_value[str(random.randint(0, 2))]if c_v == "Rock":match_result = "Computer Win"elif c_v == "Scissor":match_result = "Match Draw"else:match_result = "Player Win"l4.config(text=match_result)l1.config(text="Scissor   ")l3.config(text=c_v)button_disable()

        代码的最后一部分,将所有内容打包在一起并编写最后的细节,以便它能够工作并完成代码。这包括在石头、纸或剪刀之间进行选择的按钮。还需要制作文本。

# Add Labels, Frames and Button
Label(root,text="Rock Paper Scissor",font="normal 20 bold",fg="blue").pack(pady=20)frame = Frame(root)
frame.pack()l1 = Label(frame,text="Player    ",font=10)l2 = Label(frame,text="VS    ",font="normal 10 bold")l3 = Label(frame, text="Computer", font=10)l1.pack(side=LEFT)
l2.pack(side=LEFT)
l3.pack()l4 = Label(root,text="",font="normal 20 bold",bg="white",width=15,borderwidth=2,relief="solid")
l4.pack(pady=20)frame1 = Frame(root)
frame1.pack()b1 = Button(frame1, text="Rock",font=10, width=7,command=isrock)b2 = Button(frame1, text="Paper ",font=10, width=7,command=ispaper)b3 = Button(frame1, text="Scissor",font=10, width=7,command=isscissor)b1.pack(side=LEFT, padx=10)
b2.pack(side=LEFT, padx=10)
b3.pack(padx=10)Button(root, text="Reset Game",font=10, fg="red",bg="black", command=reset_game).pack(pady=20)# Execute Tkinter
root.mainloop()

四、更复杂游戏--弹球游戏  

4.1 窗口布局类实现

        窗口和外观,首先是最外层Frame的设定,请看代码:

from tkinter import *
import random
import time# Creating the window:
window = Tk()
window.title("Bounce")
window.geometry('600x600')
window.resizable(False, False)

        这里对窗口一系列设定:

窗口语句功能
window = Tk()创建最外层主窗口
window.title("Bounce")设标题
window.geometry('600x600')设窗口高度、宽度
window.resizable(False, False)设定窗口固定大小

4.2 建立画布对象

        画布是刻画动画功能的对象,画布需要放置在桌面,不可独立存在。因此,桌面就是画布的承载对象。因此,画布有一系列初始化函数,请看下面代码:

window = Tk()# Creating the canvas containing the game:
canvas = Canvas(window, width = 450, height = 450, bg = "black")
canvas.pack(padx = 50, pady= 50)
score = canvas.create_text(10, 20, fill = "white")
window.update()

4.3 建立小球对象

4.3.1 小球对象类

        小球相关的物体是:画布、球拍;即小球在画布内游动,小球被球拍打击而折返。

        因此,小球对象初始化需要两个外界物体,画布、球拍。 

class Ball:def __init__(self, canvas1, paddle1, color):

4.3.2 小球绘制

        小球是椭圆绘制函数,原型如下:

id = C.create_oval(x0, y0, x1, y1, option, ...)

        self.canvas.move(self.id, 190, 160)starting_direction = [-3, -2, -1, 0, 1, 2, 3]random.shuffle(starting_direction)self.x = starting_direction[0]self.y = -3self.canvas_height = self.canvas.winfo_height()self.canvas_width = self.canvas.winfo_width()
小球内初始化代码意义
        self.canvas.move(self.id, 190, 160)将小球移动到画布的位置。
        starting_direction = [-3, -2, -1, 0, 1, 2, 3]小球移动方向【横、竖、斜】
        random.shuffle(starting_direction)混淆方向
        self.x = starting_direction[0]            选一个初始方向
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()取出画布的高、宽,用以判别小球移动范围
        self.canvas_width = self.canvas.winfo_width()

 def hit_paddle(self, ballcoords):  球拍击球处理

 def draw(self):   随小球位置重画
        self.canvas.move(self.id, self.x, self.y)

4.3.3 小球数据的合理设计 

        小球数据因该分成两种:显式数据、隐含数据;显式数据针对画布而言,隐式数据针对小球运动,方向、位置变化等而设定。

4.4 全部程序代码

        在以上游戏调试完成后,我们实现一个更复杂的动态任务。实现弹球游戏,通过<--和-->件移动平板接球,下文是tkinter的应用实例:

from tkinter import *
import random
import time# Creating the window:
window = Tk()
window.title("Bounce")
window.geometry('600x600')
window.resizable(False, False)# Creating the canvas containing the game:
canvas = Canvas(window, width = 450, height = 450, bg = "black")
canvas.pack(padx = 50, pady= 50)
score = canvas.create_text(10, 20, fill = "white")window.update()class Ball:def __init__(self, canvas1, paddle1, color):self.canvas = canvas1self.paddle = paddle1self.id = canvas1.create_oval(10, 10, 25, 25, fill = color)  # The starting point of the ballself.canvas.move(self.id, 190, 160)starting_direction = [-3, -2, -1, 0, 1, 2, 3]random.shuffle(starting_direction)self.x = starting_direction[0]self.y = -3self.canvas_height = self.canvas.winfo_height()self.canvas_width = self.canvas.winfo_width()# Detecting the collision between the ball and the paddle:def hit_paddle(self, ballcoords):paddle_pos = self.canvas.coords(self.paddle.id)if ballcoords[0] <= paddle_pos[2] and ballcoords[2] >= paddle_pos[0]:if paddle_pos[3] >= ballcoords[3] >= paddle_pos[1]:return Truereturn False# Detecting the collision between the the ball and the canvas sides:def draw(self):self.canvas.move(self.id, self.x, self.y)ballcoords = self.canvas.coords(self.id)if ballcoords[1] <= 0:self.y = 3if ballcoords[3] >= self.canvas_height:self.y = 0self.x = 0self.canvas.create_text(225, 150, text = "Game Over!", font = ("Arial", 16), fill = "white")if ballcoords[0] <= 0:self.x = 3if ballcoords[2] >= self.canvas_width:self.x = -3if self.hit_paddle(ballcoords):self.y = -3class Paddle:def __init__(self, canvas1, color):self.canvas1 = canvasself.id = canvas.create_rectangle(0, 0, 100, 10, fill = color)self.canvas1.move(self.id, 180, 350)self.x = 0self.y = 0self.canvas1_width = canvas1.winfo_width()self.canvas1.bind_all("<Left>", self.left)self.canvas1.bind_all("<Right>", self.right)def draw(self):self.canvas1.move(self.id, self.x, 0)paddlecoords = self.canvas1.coords(self.id)if paddlecoords[0] <= 0:self.x = 0if paddlecoords[2] >= self.canvas1_width:self.x = 0def right(self, event):self.x = 3def left(self, event):self.x = -3paddle = Paddle(canvas, color = "white")
ball = Ball(canvas, paddle, color = "red")# New code after here
def handler():global runrun = Falsewindow.protocol("WM_DELETE_WINDOW", handler)
run = Truewhile run:# New code before hereball.draw()paddle.draw()window.update_idletasks()window.update()time.sleep(0.01)window.destroy()    # should always destroy window before exit

五、程序结果 

相关文章:

【python知识】用 Tkinter实现“剪刀-石头-布”和“弹球游戏 ”

一、提要 Tkinter是一个Python内置模块&#xff0c;它提供了一个简单易用的界面来创建GUI。 在实现一些动态的画面、如游戏还是需要一些创新性思维的。在本文中&#xff0c;我们将使用 Tkinter 探索 Python GUI 编程。我们将介绍 Tkinter 的基础知识&#xff0c;并演示如何使用…...

Android 绘制之文字测量

drawText() 绘制文字 绘制进度条:paint.strokeCap Paint.CAP.RONUD 线条两边样式 设置文字字体:paint.typeFace Resources.Compat.getFont(context,font) 设置加粗 paint.isFakeBoldText 设置居中: paint.setTextAlign Paint.Align.CENTER //居中, 并不是真正的居中 往…...

基于AVR128单片机智能传送装置

一、系统方案 1、板载可变电阻&#xff08;电位器&#xff09;R29的电压作为处理器ATmega128的模数转换模块中单端ADC0的模拟信号输入&#xff08;跳线JP13短接&#xff09;。 2、调节电位器&#xff0c;将改变AD转换接口ADC0的模拟信号输入&#xff0c;由处理器完成ADC0的A/D转…...

Nexus私有仓库+IDEA配置远程推送

目录 一、docker安装nexus本地私服&#xff0c;Idea通过maven配置deploy本地jar包&#xff08;简单&#xff09; 二、docker push镜像到第三方nexus远程私服&#xff08;shell命令操作&#xff09; 三、springboot通过maven插件自动生成docker镜像并push到nexus私服&#xf…...

idea2023项目上传到gitee

1、按照gitee插件 File——>Settings plugins——>Marketplace下面搜索gitee,然后按照gitee插件 2、上传项目 VCS_——>Share Project on Gitee 如果第一次没登录的需要先登录&#xff0c;登录完后就可以上传了...

【golang】派生数据类型---指针 标识符、关键字等

1、指针 对比C/C中的指针&#xff0c;go语言中的指针显得极为简洁&#xff0c;只是简单的获取某个空间的地址 或者 根据指针变量中的内容 获取对应存储空间的内容等操作。 具体示例如下&#xff1a; go中使用指针需要注意的点&#xff1a; 可以通过指针改变它所指向的内存空…...

深度学习技术

深度学习是什么&#xff1f; 深度学习&#xff0c;英文名为Deep Learning&#xff0c;其实就是机器学习的一种高级形式。它的灵感来源于人脑神经网络的工作方式&#xff0c;是一种让机器可以自主地从数据中学习和提取特征的技术。你可以把它想象成一位小侦探&#xff0c;通过不…...

TCP/IP网络江湖——物理层护江山:网络安全的铁壁防线(物理层下篇:物理层与网络安全)

TCP/IP网络江湖——物理层护江山:网络安全的铁壁防线(物理层下篇:物理层与网络安全) 〇、引言一、物理层的隐私与保密1.1 加密技术的护盾1.2 安全传输协议的密约1.3 物理层的安全控制1.4 面对未知威胁的准备二、电磁干扰与抵御2.1 电磁干扰的威胁2.2 抗干扰技术的应用2.3 屏…...

python-数据可视化-使用API

使用Web应用程序编程接口 &#xff08;API&#xff09;自动请求网站的特定信息而不是整个网页&#xff0c;再对这些信息进行可视化 使用Web API Web API是网站的一部分&#xff0c;用于与使用具体URL请求特定信息的程序交互。这种请求称为API调用 。请求的数据将以易于处理的…...

窗口看门狗

从下往上看: 1. 时钟设置 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//使能独立看门狗时钟 WWDG_SetPrescaler(WWDG_Prescaler_8);//看门狗预分频器WWDG counter clock (PCLK1/4096)/8 2.设置窗口值 实际就是设置WWDG_CR的低七位值, 但是这个值要大于0x40(也就是…...

开发新能源的好处

风能无论是总装机容量还是新增装机容量&#xff0c;全球都保持着较快的发展速度&#xff0c;风能将迎来发展高峰。风电上网电价高于火电&#xff0c;期待价格理顺促进发展。生物质能有望在农业资源丰富的热带和亚热带普及&#xff0c;主要问题是降低制造成本&#xff0c;生物乙…...

error: can‘t find Rust compiler

操作系统 win11 pip install -r requirements.txt 报错如下 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl (95 kB) Building wheels for collected p…...

全面解析MES系统中的车间退料管理

一、车间退料管理的定义&#xff1a; 车间退料是指在生产过程中&#xff0c;将不合格或多余的物料、半成品或成品从车间环节返还到供应链的过程。车间退料管理则是指对这一退料过程进行规范化、系统化的管理和跟踪。 二、车间退料管理的流程&#xff1a; 1. 退料申请&#xf…...

探究finally代码块是否执行

情况一&#xff1a;try代码块正常执行&#xff0c;无异常&#xff0c;finally代码块无retrun&#xff1b; 代码演示 public class Test38 {public static void main(String[] args) {int foo foo();System.out.println("foo:" foo);}public static int foo() {tr…...

leetcode刷题(字符串相加、包含每个查询的最小区间、模拟行走机器人、环形子数组的最大和、满足不等式的最大值、四数之和、树中距离之和)

目录 1、字符串相加 2、包含每个查询的最小区间 3、模拟行走机器人 4、环形子数组的最大和 5、满足不等式的最大值 6、四数之和 7、 树中距离之和 1、字符串相加 class Solution:def addStrings(self, num1: str, num2: str) -> str:i len(num1) - 1 # num1的末…...

Grafana reporter定时报表踩坑记录

前言:本以为测试grafana reporter功能能很顺利,但按照网上大佬分享的记录进行操作,屡屡报错,不知是因为我的grafana部署在k8s中之前由低版本升级到高版本导致的,还是其他原因,在grafana中安装Grafana Image Renderer 一直报错。 Github地址:https://github.com/IzakMar…...

Flutter 状态管理引子

1、为了更好地了解状态管理&#xff0c;先看看什么是状态。 在类似Flutter这样的响应式编程框架中&#xff0c;我们可以认为U相关的开发就是对数据进行封装&#xff0c;将之转换为具体的U1布局或者组件。借用Flutter官网的一张图&#xff0c;可以把我们在第二部分做的所有开发…...

CFC编程入门_【10分钟学会】

什么是CFC&#xff1a; 【差不多10分钟全学会】 CFC是图形化编程&#xff0c; 跟单片机的连线一样&#xff0c; 唯一的区别&#xff1a;功能块右侧是【只能输出】引脚。 只有左侧引脚可以输入输出。 有哪些控件&#xff1a; 指针&#xff1a;用于拖动功能块。 控制点&#xf…...

golang无需创建新切片

在 Go 语言中&#xff0c;append(b, 0)[:len(b)] 是一种常见的用法&#xff0c;用于在切片 b 后追加一个元素&#xff0c;并返回旧切片的前 len(b) 个元素。 这种用法的目的是将一个新元素追加到切片中&#xff0c;并确保切片的长度保持不变。具体步骤如下&#xff1a; 1. ap…...

Django基础5——ORM中间程序

文章目录 一、基本了解二、ORM基本操作2.1 连接数据库2.1.1 使用sqlite数据库2.1.2 使用MySQL数据库 2.2 对数据库操作2.2.1 增&#xff08;前端数据——>数据库&#xff09;2.2.2 查&#xff08;数据库——>前端展示&#xff09;2.2.3 改&#xff08;修改数据&#xff0…...

SpringAOP详解(上)

当需要在方法前后做一些操作就需要借助动态代理来实现 一、动态代理实现方法 1、jdk自带实现方式 jdk实现代理是被代理类实现接口的方式 public interface UserInterface {void test(); }public class UserService implements UserInterface {public void test() {System.o…...

C++ 存储类

存储类定义 C 程序中变量/函数的范围&#xff08;可见性&#xff09;和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类&#xff1a; autoregisterstaticexternmutablethread_local (C11) 从 C 17 开始&#xff0c;auto 关键字不再是 C 存储…...

【教程分享】Docker搭建Zipkin,实现数据持久化到MySQL、ES

1 拉取镜像 指定版本&#xff0c;在git查看相应版本&#xff0c;参考&#xff1a; https://github.com/openzipkin/zipkin 如2.21.7 docker pull openzipkin/zipkin:2.21.7 2 启动 Zipkin默认端口为9411。启动时通过-e server.portxxxx设置指定端口 docker run --name zi…...

数据库——MySQL高性能优化规范

文章目录 数据库命令规范数据库基本设计规范1. 所有表必须使用 Innodb 存储引擎2. 数据库和表的字符集统一使用 UTF83. 所有表和字段都需要添加注释4. 尽量控制单表数据量的大小,建议控制在 500 万以内。5. 谨慎使用 MySQL 分区表6.尽量做到冷热数据分离,减小表的宽度7. 禁止在…...

openapi中job提交

openapi中job提交 简介创建job查看job查看job 的描述查看job 的日志 镜像地址&#xff1a; https://www.jianshu.com/p/fcb3094f8c48?v1693020692471 简介 这里使用微软OpenPAI, 在nvidia的GPU设备上进行job测试。 创建job protocolVersion: 2 name: lenet_gpu_pytorch112_…...

Spring Boot 整合 分布式搜索引擎 Elastic Search 实现 数据聚合

文章目录 ⛄引言一、数据聚合⛅简介⚡聚合的分类 二、DSL实现数据聚合⏰Bucket聚合⚡Metric聚合 三、RestAPI实现数据聚合⌚业务需求⏰业务代码实现 ✅效果图⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常…...

深入探讨代理技术:保障网络安全与爬虫效率

在当今数字化时代&#xff0c;代理技术在网络安全与爬虫领域扮演着重要角色。从Socks5代理、IP代理&#xff0c;到网络安全和爬虫应用&#xff0c;本文将深入探讨这些关键概念&#xff0c;揭示它们如何相互关联以提高网络安全性和爬虫效率。 1. 代理技术简介 代理技术是一种允…...

【云原生】Docker私有仓库 RegistryHabor

目录 1.Docker私有仓库&#xff08;Registry&#xff09; 1.1 Registry的介绍 1.2 Registry的部署 步骤一&#xff1a;拉取相关的镜像 步骤二&#xff1a;进行 Registry的相关yml文件配置&#xff08;docker-compose&#xff09; 步骤三&#xff1a;镜像的推送 2. Regist…...

二叉树先序遍历的两种思路

二叉树先序遍历的两种思路 遍历思路 遍历二叉树首先判断一个节点应该做什么然后遍历左子树 遍历右子树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int …...

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(一)

Java语言是最为流行的面向对象编程语言之一&#xff0c; Java运行时环境&#xff08;JRE&#xff09;拥有着非常大的用户群&#xff0c;其安全问题十分重要。近年来&#xff0c;由JRE漏洞引发的JVM逃逸攻击事件不断增多&#xff0c;对个人计算机安全造成了极大的威胁。研究JRE安…...