即使表面看起来是正确的,也无法创建表面

问题描述

self.image = pygame.Surface(
                int(math.sqrt((end_pos[1] - start_pos[1])**2 +(end_pos[0] - start_pos[0])**2)),width)

返回错误

ValueError: size needs to be (int width,int height)

解决方法

pygame.Surface 的构造函数的参数是一个具有 Surface (import string import tkinter as tk import tkinter.messagebox import base64 import os import bottom as bottom from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC from cryptography.fernet import Fernet def createKey(): key = Fernet.generate_key() print(key) file = open('key.key','wb') file.write(key) file.close() password_provided = "password" password = password_provided.encode() salt = os.urandom(e2.get()) kdf = PBKDF2HMAC( algorithm=hashes.SHA256(),length=32,salt=salt,iterations=100000,backend=default_backend() ) key = base64.urlsafe_b64encode(kdf.derive(password)) print(key) def encryptFile(): file = open('key.key','rb') key = file.read() file.close() print("File name: %s" % (e1.get())) str1 = e1.get() str2 = '.encrpyted' str3 = str1 + str2 print("After encryption: %s" % (str3)) with open(e1.get(),'rb') as f: data = f.read() fernet = Fernet(key) encrypted = fernet.encrypt(data) with open(str3,'wb') as f: f.write(encrypted) master = tk.Tk() tk.Label(master,text="Choose").grid(row=0) tk.Label(master,text="key Size").grid(row=1) e1 = tk.Entry(master) e2 = tk.Entry(master) e1.grid(row=0,column=1) e2.grid(row=1,column=1) tk.Button(master,text='Create key',command=createKey).grid(row=3,column=0,sticky=tk.W,pady=4) tk.Button(master,text='Encrpyt',command=encryptFile).grid(row=3,column=1,pady=4) tk.mainloop() ) 大小的元组:

pygame.Surface((with,height))

self.image = pygame.Surface(int(math.sqrt((end_pos[1] - start_pos[1])**2 +(end_pos[0] - start_pos[0])**2)),width)

分别

self.image = pygame.Surface(
    (int(math.sqrt((end_pos[1] - start_pos[1])**2 +(end_pos[0] - start_pos[0])**2)),width))